Assembly 错误:在'repz';
因此,基本上我正在尝试在32位Linux、ELF二进制文件上重新使用从Assembly 错误:在'repz';,assembly,x86,elf,disassembly,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 但是我还是犯了同样的错误 有人能
objdump
反汇编的一些asm代码
在反汇编文件中,我看到以下说明:
8057a01: f3 c3 repz ret
当我尝试在asm代码中重复使用repz-ret
时,出现以下错误:
Error: expecting string instruction after `repz'
我尝试指定一个ret
类型,如下所示:
repz retq
但是我还是犯了同样的错误
有人能给我一些帮助吗?您的汇编程序可能没有准备好使用
repz
repz
放在ret
指令前面时本身不做任何事情,但它有时用于防止直接跳转到ret
指令,本质上是为了填充,因为直接跳转到ret
指令在某些CPU型号上性能不佳
您应该能够使用
db
序列对指令组合进行编码。您的汇编程序可能没有准备好使用repz
repz
放在ret
指令前面时本身不做任何事情,但它有时用于防止直接跳转到ret
指令,本质上是为了填充,因为直接跳转到ret
指令在某些CPU型号上性能不佳
您应该能够使用
db
序列对指令组合进行编码。解决方案很简单,只需将repz
和ret
放在两个连续的行上。还要注意的是,这种优化已经过时,AMD现在建议如果您的ret
是分支目标(即使是失败的),则使用ret 0
。事实上,对于更新的AMD芯片,由于分支预测器的工作方式不同,因此不需要进行整个优化。解决方案很简单,只需将repz
和ret
放在两个连续的行上即可。还要注意的是,这种优化已经过时,AMD现在建议如果您的ret
是分支目标(即使是失败的),则使用ret 0
。事实上,对于更新的AMD芯片,不需要整个优化,因为分支预测器的工作方式不同。可能重复@JonathonReinhart,我不这么认为,请仔细检查他们在说什么,基本上我的问题是为什么repz-ret
无法组装@JonathonReinhart的可能副本我不这么认为,请仔细检查他们在说什么,基本上我的问题是为什么repz-ret
无法组装