【发布时间】:2018-11-01 19:47:22
【问题描述】:
是64位x86 asm序列:
pop r11
jmp r11
...相当于ret附近,除了它破坏r11?
【问题讨论】:
-
对于非叶函数,它可能不符合 Win64 ABI,但这不是语义所固有的
-
在 64 位模式下,只有
C3(接近返回)在功能上等同于pop,然后是FF /4(接近绝对间接跳转)。其他变体不一定等价。 -
@harold - 好点子,尽管在我的情况下,我是在有人试图hack together their own coroutines 的情况下问的,所以我认为他们在正确的 SEH 处理上几乎是 SOL。跨度>
-
@HadiBrais - 谢谢,我的意思是即将返回并更新问题以反映这一点。
-
在架构上,当然,除非你在它前面加上前缀。 (例如,操作数大小可以将其转换为
pop r11w,但 IIRCret的操作数大小固定为 64,并且不受66前缀的影响)。在微架构上,显然不是(这就是重点)。