the hardware so ware interface
play

The Hardware/So<ware Interface CSE351 Winter 2013 - PowerPoint PPT Presentation

University of Washington The Hardware/So<ware Interface CSE351 Winter 2013 Procedures and Stacks I University of Washington Roadmap Data & addressing


  1. University ¡of ¡Washington ¡ The ¡Hardware/So<ware ¡Interface ¡ CSE351 ¡Winter ¡2013 ¡ Procedures ¡and ¡Stacks ¡I ¡

  2. University ¡of ¡Washington ¡ Roadmap ¡ Data ¡& ¡addressing ¡ Integers ¡& ¡floats ¡ Machine ¡code ¡& ¡C ¡ C: ¡ Java: ¡ x86 ¡assembly ¡ Car c = new Car(); car *c = malloc(sizeof(car)); programming ¡ c.setMiles(100); c->miles = 100; Procedures ¡& ¡ c.setGals(17); c->gals = 17; stacks ¡ float mpg = float mpg = get_mpg(c); Arrays ¡& ¡structs ¡ c.getMPG(); free(c); Memory ¡& ¡caches ¡ Processes ¡ Assembly ¡ get_mpg: Virtual ¡memory ¡ pushq %rbp language: ¡ movq %rsp, %rbp Memory ¡allocaPon ¡ ... Java ¡vs. ¡C ¡ popq %rbp ret OS: ¡ Machine ¡ 0111010000011000 100011010000010000000010 code: ¡ 1000100111000010 110000011111101000011111 Computer ¡ system: ¡ 2 ¡ Winter ¡2013 ¡ Procedures ¡and ¡Stacks ¡I ¡

  3. University ¡of ¡Washington ¡ Procedures ¡and ¡Call ¡Stacks ¡  How ¡do ¡I ¡pass ¡arguments ¡to ¡a ¡procedure? ¡  How ¡do ¡I ¡get ¡a ¡return ¡value ¡from ¡a ¡procedure? ¡  Where ¡do ¡I ¡put ¡local ¡variables? ¡  When ¡a ¡funcPon ¡returns, ¡how ¡does ¡it ¡know ¡where ¡to ¡return ¡ to? ¡ ¡  To ¡answer ¡these ¡quesPons, ¡we ¡need ¡a ¡ call ¡stack ¡… ¡ 3 ¡ Winter ¡2013 ¡ Procedures ¡and ¡Stacks ¡I ¡

  4. University ¡of ¡Washington ¡ Memory ¡Layout ¡ 2 N -1 local variables; Stack procedure context Dynamic Data variables allocated with new or malloc (Heap) static variables Static Data (including global variables (C)) Literals literals (e.g., “example”) Instructions 0 4 ¡ Winter ¡2013 ¡ Procedures ¡and ¡Stacks ¡I ¡

  5. University ¡of ¡Washington ¡ Memory ¡Layout ¡ Stack Managed “automatically” writable; not executable (by compiler) Dynamic Data writable; not executable Managed by programmer (Heap) Static Data writable; not executable Initialized when process starts Literals Read-only; not executable Initialized when process starts Instructions Initialized when process starts Read-only; executable 5 ¡ Winter ¡2013 ¡ Procedures ¡and ¡Stacks ¡I ¡

  6. University ¡of ¡Washington ¡ IA32 ¡Call ¡Stack ¡ Stack ¡“Bobom” ¡  Region ¡of ¡memory ¡managed ¡ ¡ with ¡a ¡stack ¡“discipline” ¡  Grows ¡toward ¡lower ¡addresses ¡ Increasing ¡  Customarily ¡shown ¡“upside-­‑down” ¡ Addresses ¡  Register ¡ %esp ¡contains ¡ ¡ lowest ¡stack ¡address ¡ = ¡address ¡of ¡“top” ¡element ¡ Stack ¡Grows ¡ Down ¡ Stack ¡Pointer: ¡ %esp Stack ¡“Top” ¡ 6 ¡ Winter ¡2013 ¡ Procedures ¡and ¡Stacks ¡I ¡

  7. University ¡of ¡Washington ¡ IA32 ¡Call ¡Stack: ¡Push ¡ Stack ¡“Bobom” ¡  pushl Src ¡ Increasing ¡ Addresses ¡ Stack ¡Grows ¡ Down ¡ Stack ¡Pointer: ¡ %esp Stack ¡“Top” ¡ 7 ¡ Winter ¡2013 ¡ Procedures ¡and ¡Stacks ¡I ¡

  8. University ¡of ¡Washington ¡ IA32 ¡Call ¡Stack: ¡Push ¡ Stack ¡“Bobom” ¡  pushl Src ¡  Fetch ¡value ¡from ¡ Src ¡ Increasing ¡  Decrement ¡ %esp ¡ by ¡4 ¡ ¡ (why ¡4?) ¡ Addresses ¡  Store ¡value ¡at ¡address ¡ ¡ given ¡by ¡ %esp Stack ¡Grows ¡ Down ¡ -­‑4 ¡ Stack ¡Pointer: ¡ %esp Stack ¡“Top” ¡ 8 ¡ Winter ¡2013 ¡ Procedures ¡and ¡Stacks ¡I ¡

  9. University ¡of ¡Washington ¡ IA32 ¡Call ¡Stack: ¡Pop ¡ Stack ¡“Bobom” ¡  popl Dest ¡ Increasing ¡ Addresses ¡ Stack ¡Grows ¡ Down ¡ Stack ¡Pointer: ¡ %esp Stack ¡“Top” ¡ 9 ¡ Winter ¡2013 ¡ Procedures ¡and ¡Stacks ¡I ¡

  10. University ¡of ¡Washington ¡ IA32 ¡Call ¡Stack: ¡Pop ¡ Stack ¡“Bobom” ¡  popl Dest ¡  Load ¡value ¡from ¡address ¡ %esp ¡ Increasing ¡  Write ¡value ¡to ¡ Dest ¡ Addresses ¡  Increment ¡ %esp ¡ by ¡4 ¡ Stack ¡Grows ¡ Stack ¡Pointer: ¡ %esp Down ¡ +4 ¡ Stack ¡“Top” ¡ 10 ¡ Winter ¡2013 ¡ Procedures ¡and ¡Stacks ¡I ¡

  11. University ¡of ¡Washington ¡ Procedure ¡Call ¡Overview ¡ Caller ¡ ¡ ¡ ¡ ¡… ¡ Callee ¡ <set ¡up ¡args> ¡ call ¡ <create ¡local ¡vars> ¡ <clean ¡up ¡args> ¡ ¡ ¡ ¡… ¡ <find ¡return ¡val> ¡ <set ¡up ¡return ¡val> ¡ ¡ ¡ ¡ ¡… ¡ <destroy ¡local ¡vars> ¡ ¡ return ¡  Callee ¡must ¡know ¡where ¡to ¡find ¡args ¡  Callee ¡must ¡know ¡where ¡to ¡find ¡“return ¡address” ¡  Caller ¡must ¡know ¡where ¡to ¡find ¡return ¡val ¡  Caller ¡and ¡Callee ¡run ¡on ¡same ¡CPU ¡ → ¡use ¡the ¡same ¡registers ¡  Caller ¡might ¡need ¡to ¡save ¡registers ¡that ¡Callee ¡might ¡use ¡  Callee ¡might ¡need ¡to ¡save ¡registers ¡that ¡Caller ¡has ¡used ¡ 11 ¡ Winter ¡2013 ¡ Procedures ¡and ¡Stacks ¡I ¡

  12. University ¡of ¡Washington ¡ Procedure ¡Call ¡Overview ¡ Caller ¡ ¡ ¡ ¡ ¡… ¡ <save ¡regs> ¡ Callee ¡ <set ¡up ¡args> ¡ call ¡ <save ¡regs> ¡ <clean ¡up ¡args> ¡ <create ¡local ¡vars> ¡ ¡ ¡ ¡… ¡ <restore ¡regs> ¡ <set ¡up ¡return ¡val> ¡ <find ¡return ¡val> ¡ <destroy ¡local ¡vars> ¡ ¡ ¡ ¡ ¡… ¡ ¡ <restore ¡regs> ¡ return ¡  The ¡convenPon ¡of ¡where ¡to ¡leave/find ¡things ¡is ¡called ¡the ¡ procedure ¡call ¡linkage ¡  Details ¡vary ¡between ¡systems ¡  We ¡will ¡see ¡the ¡convenGon ¡for ¡IA32/Linux ¡in ¡detail ¡  What ¡could ¡happen ¡if ¡our ¡program ¡didn’t ¡follow ¡these ¡convenGons? ¡ 12 ¡ Winter ¡2013 ¡ Procedures ¡and ¡Stacks ¡I ¡

  13. University ¡of ¡Washington ¡ Procedure ¡Control ¡Flow ¡  Use ¡stack ¡to ¡support ¡procedure ¡call ¡and ¡return ¡  Procedure ¡call: ¡ call label  Push ¡return ¡address ¡on ¡stack ¡  Jump ¡to ¡ label ¡ 13 ¡ Winter ¡2013 ¡ Procedures ¡and ¡Stacks ¡I ¡

  14. University ¡of ¡Washington ¡ Procedure ¡Control ¡Flow ¡  Use ¡stack ¡to ¡support ¡procedure ¡call ¡and ¡return ¡  Procedure ¡call: ¡ call label  Push ¡return ¡address ¡on ¡stack ¡  Jump ¡to ¡ label ¡  Return ¡address: ¡  Address ¡of ¡instrucGon ¡aOer ¡ call ¡  Example ¡from ¡disassembly: ¡ 804854e: e8 3d 06 00 00 call 8048b90 <main> 8048553: 50 pushl %eax  Return ¡address ¡= ¡ 0x8048553 ¡  Procedure ¡return: ¡ ret  Pop ¡return ¡address ¡from ¡stack ¡  Jump ¡to ¡address 14 ¡ Winter ¡2013 ¡ Procedures ¡and ¡Stacks ¡I ¡

  15. University ¡of ¡Washington ¡ Procedure ¡Call ¡Example ¡ 804854e: e8 3d 06 00 00 call 8048b90 <main> 8048553: 50 pushl %eax call 8048b90 0x110 0x10c 0x108 123 %esp 0x108 %eip 0x804854e %eip: program ¡counter 15 ¡ Winter ¡2013 ¡ Procedures ¡and ¡Stacks ¡I ¡

  16. University ¡of ¡Washington ¡ Procedure ¡Call ¡Example ¡ 804854e: e8 3d 06 00 00 call 8048b90 <main> 8048553: 50 pushl %eax call 8048b90 0x110 0x110 0x10c 0x10c 0x108 123 0x108 123 0x104 %esp 0x108 %esp 0x108 %eip 0x804854e %eip 0x804854e %eip: program ¡counter 16 ¡ Winter ¡2013 ¡ Procedures ¡and ¡Stacks ¡I ¡

  17. University ¡of ¡Washington ¡ Procedure ¡Call ¡Example ¡ 804854e: e8 3d 06 00 00 call 8048b90 <main> 8048553: 50 pushl %eax call 8048b90 0x110 0x110 0x10c 0x10c 0x108 123 0x108 123 0x104 %esp 0x108 %esp 0x108 %eip 0x804854e %eip 0x804854e 0x8048553 %eip: program ¡counter 17 ¡ Winter ¡2013 ¡ Procedures ¡and ¡Stacks ¡I ¡

  18. University ¡of ¡Washington ¡ Procedure ¡Call ¡Example ¡ 804854e: e8 3d 06 00 00 call 8048b90 <main> 8048553: 50 pushl %eax call 8048b90 0x110 0x110 0x10c 0x10c 0x108 123 0x108 123 0x104 0x8048553 %esp 0x108 %esp 0x104 0x108 %eip 0x804854e %eip 0x804854e 0x8048553 %eip: program ¡counter 18 ¡ Winter ¡2013 ¡ Procedures ¡and ¡Stacks ¡I ¡

Recommend


More recommend