2010-08-13 64 views
2

什么意思lea 0x4(%esp),%ecx in在& t装配?什么是0x4(%esp)?装配问题和疑问

+0

在命令标签在这里无关紧要:) – Bush 2015-11-30 18:17:16

回答

3

这是%esp + 0x4

LEA代表负载有效地址。在这种情况下,就是一个简单的添加,如上所示。通常情况下,人们和编译器不再使用它,因为CPU现在提供了一个漂亮的地址生成单元(也称为AGU),它允许您使用各种花哨算法从寄存器和值计算地址。总之,无论你使用lea,你现在可以将其嵌入到其他任何指令中。

+0

呃,'lea'说明略低于10为我现在正在处理的代码生成的所有_all_指令的百分比。在x86上,你可以在加载或存储操作中嵌入任何'lea'操作(我真的很怀疑这一点),但是代码仍然充满了指针算术,并不一定涉及加载或存储。 – zwol 2010-08-13 23:43:33

1
lea ecx,[esp+4] 
+2

我不是那个贬低你的人,但是,你知道关于直升机飞行员和微软技术支持的笑话吗? – zwol 2010-08-13 23:44:59

+0

我现在要做。我认为这个问题是关于破译** at&t语法**的。 – 2010-08-14 13:24:28

+0

现在我需要谷歌这个笑话:) – jyz 2010-10-06 18:27:30

1

esp是堆栈指针。 0x4是偏移量。 AT & T语法有command source, destination,这里的命令是LEA,它是“负载有效地址”。

因此,我们说的是CPU加载地址“堆栈指针+ 4”入册“ECX”