Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 错误:在'repz';_Assembly_X86_Elf_Disassembly - Fatal编程技术网

Assembly 错误:在'repz';

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 但是我还是犯了同样的错误 有人能

因此,基本上我正在尝试在32位Linux、ELF二进制文件上重新使用从
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
无法组装