十六进制数,括号中的寄存器在汇编中是什么意思?
What does a hexadecimal number, with a register in parenthesis mean in Assembly?
lea 0x1c(%ebp),%eax
所以,我隐约明白lea指令是做什么的,我知道那些是寄存器,但是这个结构是什么:0x1c(%ebp)
?我从 objdump 中得到了这段代码。
它是众多 x86 addressing modes 之一。具体来说,这称为 "displacement" 寻址。
既然你说你使用了 objdump 而没有指定你使用了 -M
标志,我将在 GAS syntax (as opposed to Intel syntax 中假设这一点。这意味着第一个操作数是源,第二个操作数是目标。
lea 0x1C(%ebp),%eax
指令表示,"Take the value in %ebp, add 0x1C (28 in decimal), then store that value in %eax"。
lea 0x1c(%ebp),%eax
所以,我隐约明白lea指令是做什么的,我知道那些是寄存器,但是这个结构是什么:0x1c(%ebp)
?我从 objdump 中得到了这段代码。
它是众多 x86 addressing modes 之一。具体来说,这称为 "displacement" 寻址。
既然你说你使用了 objdump 而没有指定你使用了 -M
标志,我将在 GAS syntax (as opposed to Intel syntax 中假设这一点。这意味着第一个操作数是源,第二个操作数是目标。
lea 0x1C(%ebp),%eax
指令表示,"Take the value in %ebp, add 0x1C (28 in decimal), then store that value in %eax"。