Reputation: 341
What does lea 0x4(%esp),%ecx
mean in at&t assembly?
What really is 0x4(%esp)
?
Upvotes: 4
Views: 2427
Reputation: 29539
esp
is the stack pointer. 0x4 is the offset. AT&T syntax has the command source, destination
and the command here is LEA
which is "Load Effective Address."
So we're telling the CPU to load the address "stack pointer + 4" into the register "ecx"
Upvotes: 1
Reputation: 138051
It's %esp + 0x4
.
LEA
stands for Load Effective Address. It's, in this case, a simple addition, as shown above. Typically people and compilers don't really use it anymore because CPUs now ship with a nifty address generation unit (otherwise called AGU), which lets you use all kinds of fancy arithmetics to compute addresses from registers and values. In short, whatever you did with lea
, you can now embed it inside any other instruction.
Upvotes: 3