错误:在`repz'之后期待字符串指令

时间:2014-05-12 01:30:44

标签: assembly x86 elf disassembly

所以基本上我试图在32位Linux,ELF二进制文件上重用一些从objdump反汇编的asm代码。

在反汇编的文件中,我看到了这条指令:

8057a01:       f3 c3                   repz ret

当我尝试在我的asm代码中重用repz ret时,出现了此错误:

 Error: expecting string instruction after `repz'

我尝试像这样指定ret类型:

repz retq

但我仍然遇到同样的错误..

有人能给我一些帮助吗?

2 个答案:

答案 0 :(得分:4)

您的汇编程序可能没有准备好使用repz

放置在repz指令前面时,

ret本身不会做任何事情,但有时会使用它来防止直接跳转到ret指令 - 用于填充,基本上 - 因为直接跳转到ret在某些CPU型号上性能不佳。

您应该能够使用db序列对指令组合进行编码。

答案 1 :(得分:3)

解决方案很简单,您只需将repzret放在两个连续的行上即可。另请注意,此优化已过时,如果您的ret 0是分支目标,则AMD现在建议使用ret(即使是淘汰)。事实上,对于更新的AMD芯片,不需要整个优化,因为分支预测器的工作方式不同。