Luis
Luis

Reputation: 341

What does lea 0x4(%esp),%ecx mean in AT&T syntax?

What does lea 0x4(%esp),%ecx mean in at&t assembly?

What really is 0x4(%esp)?

Upvotes: 4

Views: 2427

Answers (3)

Mahmoud Al-Qudsi
Mahmoud Al-Qudsi

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

zneak
zneak

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

Jens Björnhager
Jens Björnhager

Reputation: 5649

lea ecx,[esp+4]

Upvotes: 2

Related Questions