lea 0x4(%esp),%ecx
在 at&t 装配中是什么意思?
究竟是0x4(%esp)
什么?
是%esp + 0x4
。
LEA
代表加载有效地址。在这种情况下,这是一个简单的添加,如上所示。通常,人们和编译器不再真正使用它,因为 CPU 现在带有一个漂亮的地址生成单元(也称为 AGU),它允许您使用各种花哨的算术从寄存器和值计算地址。简而言之,无论你用 做什么lea
,你现在都可以将它嵌入到任何其他指令中。
lea ecx,[esp+4]
esp
是堆栈指针。0x4 是偏移量。AT&T 语法有,command source, destination
这里的命令LEA
是“加载有效地址”。
所以我们告诉 CPU 将地址“堆栈指针 + 4”加载到寄存器“ecx”中