15 213 Recitation 3 2501 Outline Code to

  • Slides: 8
Download presentation
15 -213 Recitation 3 – 2/5/01 Outline • Code to Executables • Machine Model

15 -213 Recitation 3 – 2/5/01 Outline • Code to Executables • Machine Model • Assembly Programming – Structure – Addressing Modes – Miscellaneous Stuff • H 1 a / L 3 Practice Shaheen Gandhi e-mail: sgandhi@andrew. cmu. edu Office Hours: Wednesday 1: 30 – 2: 30 Wean 3108

Code to Executables start C/C++ Code (text) Preprocessor (text) Compiler (text) Assembler (binary) Linker

Code to Executables start C/C++ Code (text) Preprocessor (text) Compiler (text) Assembler (binary) Linker (binary) finish Binary Executable (binary)

Machine Model CPU E I P Registers Condition Codes Memory Addresses Data Object Code

Machine Model CPU E I P Registers Condition Codes Memory Addresses Data Object Code Program Data Instructions Stack

Special Registers • • %eax %eip %ebp %esp Return Value Instruction Pointer Base (Stack

Special Registers • • %eax %eip %ebp %esp Return Value Instruction Pointer Base (Stack Frame) Pointer Stack Pointer

Assembly Programming: Structure • • Function Setup Save Old Base Pointer (pushl %ebp) Set

Assembly Programming: Structure • • Function Setup Save Old Base Pointer (pushl %ebp) Set up own base pointer (movl %esp, %ebp) – • Save any registers that could be clobbered – • Note that this saves the old stack pointer Where? Function Body Operations on data, loops, function calls

Assembly Programming: Structure • Function Cleanup Return value placed in %eax – • •

Assembly Programming: Structure • Function Cleanup Return value placed in %eax – • • • What about returning larger values? (structs, doubles, etc. ) Restore Caller’s Stack Pointer (movl %ebp, %esp) Restore Old Base Pointer (popl %ebp) Return – Where does it return to?

Assembly Programming: Simple Addressing Modes • • • (R) $10(R) $0 x 10(R) Examples

Assembly Programming: Simple Addressing Modes • • • (R) $10(R) $0 x 10(R) Examples Mem[R] Mem[R + 10] Mem[R + 16]

Assembly Programming: Indexed Addressing Modes Generic Form D(Rb, Ri, S) Mem[Reg[Rb]+S*Reg[Ri]+ D] Examples •

Assembly Programming: Indexed Addressing Modes Generic Form D(Rb, Ri, S) Mem[Reg[Rb]+S*Reg[Ri]+ D] Examples • • • (Rb, Ri) D(Rb, Ri) (Rb, Ri, S) Mem[Reg[Rb]+Reg[Ri]] Mem[Reg[Rb]+Reg[Ri]+D] Mem[Reg[Rb]+S*Reg[Ri]]