LEA (load effective address) just computes the address of the operand, it does not actually dereference it. Most of the time, it’s just doing a calculation like a combined multiply-and-add for, say, array indexing.
In this case, it’s doing a simple numeric subtraction: leal -4(%ebp), %eax
just assigns to the %eax
register the value of %ebp - 4
. It’s equivalent to a single sub
instruction, except a sub
requires the destination to be the same as one of the sources.
The movl
instruction, in contrast, accesses the memory location at %ebp - 4
and stores that value into %eax
.
Related Posts:
- What’s the purpose of the LEA instruction?
- Understanding cmp instruction
- What does the MOVZBL instruction do in IA-32 AT&T syntax?
- What’s the purpose of the LEA instruction?
- need help understanding the movzbl call in this function
- How to move ST(0) to EAX?
- The point of test %eax %eax
- Assembly: How does fld st(0) duplicates the top stack value in the following code?
- What does the MOVZBL instruction do in IA-32 AT&T syntax?
- What’s the purpose of the LEA instruction?
- The difference between cmpl and cmp
- x86 cmpl and jne
- What is the function of the push / pop instructions used on registers in x86 assembly?
- What is callq instruction?
- Display value found at given address gdb
- Purpose of ESI & EDI registers?
- What are the ESP and the EBP registers?
- IDIV operation in assembly (understanding)
- Convert C program into assembly code
- explanation about push ebp and pop ebp instruction in assembly
- x86 assembly: How does the ‘subl’ command work in AT&T syntax
- what does the cmpq instruction do?
- Purpose of ESI & EDI registers?
- xorl %eax – Instruction set architecture in IA-32
- Bubble sort on array on Assembly Language
- Nasm Error: invalid combination of opcode and operands
- When and why do we sign extend and use cdq with mul/div?
- How do AX, AH, AL map onto EAX?
- X86 assembly – Handling the IDIV instruction
- pop or add esp, 4 ? What is the difference?
- What is the difference between MOV and LEA?
- `testl` eax against eax?
- Difference between JE/JNE and JZ/JNZ
- Printing out a number in assembly language?
- What does `dword ptr` mean?
- Difference between JA and JG in assembly
- what does the the dword operand do in assembly
- [Binary Bomb – Phase 4
- assembly “mov” instruction
- Why shift a bit using sll and such in MIPs Assembly?
- Assembly code vs Machine code vs Object code?
- Understanding how `lw` and `sw` actually work in a MIPS program
- ARM Assembler – How do I use CMP, BLT and BGT?
- MIPS: lw (load word) instruction
- What is the meaning of XOR in x86 assembly?
- What does the BEQ instruction do exactly?
- What’s the size of a QWORD on a 64-bit machine?
- MIPS assembly for a simple for loop
- Difference between JA and JG in assembly
- mips .word function and differences between 2 codes
- Why doesn’t there exists a subi opcode for MIPS?
- LC3 LEA instruction and the value stored
- What exactly does the lb instruction do?
- lc3 LDR instruction and the value stored
- What is the difference between la and li in opcodes in MIPS?
- What does movslq do?
- Assembly language je jump function
- What are .S files?
- Why are rbp and rsp called general purpose registers?
- x86 Assembly pointers
- what is the use of ori in this part of MIPS code?
- Storing a user’s input in MIPS
- Integer absolute value in MIPS?
- MIPS Assembly – lui $t0, 4097?
- Difference between “move” and “li” in MIPS assembly language
- Greater than, less than equal, greater than equal in MIPS
- Assembly addq clarification
- Which variable size to use (db, dw, dd) with x86 assembly?
- Assembly x86 – “leave” Instruction
- MIPS program jr $ra instructions and stack handling
- How can one see content of stack with GDB?
- Assembly – JG/JNLE/JL/JNGE after CMP
- Subtract two input numbers
- writing functions in assembler
- JNZ & CMP Assembly Instructions
- Assembly language (MIPS) difference betweent addi and add
- MIPS Address out of range (MARS)
- How do I compile the asm generated by GCC?
- Difference between “addi” and “add” for pseudoinstruction “move” in MIPS?
- sorting array in mips (assembly)
- what is a file handle and where it is useful for a programmer?
- How does `Skipcond` work in the MARIE assembly language?
- What are callee and caller saved registers?
- Multiplication by a power of 2 using Logical shifts in MIPS assembly
- MIPS instruction and machine code
- Convert from Java to MIPS
- Understanding Assembly MIPS .ALIGN and Memory Addressing
- error A2022: instruction operands must be the same size
- What’s the difference between a word and byte?
- Assembly Language – How to do Modulo?
- MIPS to C Translation
- Difference between movq and movabsq in x86-64
- GDB no such file or directory
- What is the jmpq command doing in this example
- Assembly – JZ instruction after CMP
- What does bx lr do in ARM assembly language?
- `js` and `jb` instructions in assembly
- (.text+0x20): undefined reference to `main’ and undefined reference to function
- Why am I getting this error: “data definition has no type or storage class”?
- Why are there no hashtables in the C standard library?