AT&T x86 大会 "lea 0x0(%esi,1),%esi"
AT&T x86 Assembly "lea 0x0(%esi,1),%esi"
我没有找到任何关于 objdump 输出的文档。
在 objdump -D 输出中,我看到下面的 asm,但我不明白:
lea 0x0(%esi,1),%esi
从https://en.wikibooks.org/wiki/X86_Assembly/GAS_Syntax我可以看到"pointer"中有4个参数:
segment:displacement(基址寄存器,偏移寄存器,标量乘法器)
但是这个 0x0(%esi,1) 是什么意思?标量被省略为 0?
有没有人能帮我找到 AT&T asm 手册的位置?
谢谢,
史蒂文
0x0
是一个位移,当它为零时,表示可以省略。 1
是一个标度,等于1时表示也可以省略。所以这条指令 lea 0x0(%esi,1),%esi
等同于:
lea esi,[esi*1+0x00]
lea esi,[esi]
我没有找到任何关于 objdump 输出的文档。 在 objdump -D 输出中,我看到下面的 asm,但我不明白: lea 0x0(%esi,1),%esi
从https://en.wikibooks.org/wiki/X86_Assembly/GAS_Syntax我可以看到"pointer"中有4个参数: segment:displacement(基址寄存器,偏移寄存器,标量乘法器)
但是这个 0x0(%esi,1) 是什么意思?标量被省略为 0? 有没有人能帮我找到 AT&T asm 手册的位置?
谢谢, 史蒂文
0x0
是一个位移,当它为零时,表示可以省略。 1
是一个标度,等于1时表示也可以省略。所以这条指令 lea 0x0(%esi,1),%esi
等同于:
lea esi,[esi*1+0x00]
lea esi,[esi]