Bri*_*ian 8 assembly disassembly
lea 0x0(%esi),%esi
Run Code Online (Sandbox Code Playgroud)
我相信它没有结果,只是填补空间.是这样的吗?
Ira*_*ter 17
它是一个NOP.它添加了%esi和0x0的内容,并将结果放在%esi中.有人要么拥有笨拙的代码生成器,要么需要填充N个字节,其中该指令的大小正确.
LEA指令执行速度非常快(通常为1个时钟),因此比N nops要好得多.
x86虽然很古怪,但它有各种各样的指令,除了填充不同的字节数外,它们实际上没有做任何事情.您可能会发现其他不同长度的无用指令.您倾向于查找长但在1个时钟或更短时间内执行的指令.
AMD x86-64手册对于NOP应该使用什么有一些建议; 他们建议其中一个前缀操作码在实际的NOP IIRC之前重复多次.这种前缀操作码被指令获取引擎非常快地消耗; 主要是它们的成本隐藏在指令预取中,而不是指令执行时间.