1 / 11

Program Compilation and Execution

Program Compilation and Execution. Today’s Objectives. Explain why runtime stack needed for C Draw logical division of memory into stack, heap Compare and contrast stack and heap List variables stored in heap; stack; neither Describe 2 different function calling conventions.

meadow
Download Presentation

Program Compilation and Execution

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Program Compilation and Execution

  2. Today’s Objectives • Explain why runtime stack needed for C • Draw logical division of memory into stack, heap • Compare and contrast stack and heap • List variables stored in heap; stack; neither • Describe 2 different function calling conventions

  3. Logical Memory Layout Stack D Y N A M I C Currently not in use Currently not in use Heap Static Space

  4. Dice.c int NUM = 100000; main() { int i, roll, *counts; counts = (int *) malloc (13 * sizeof(int)); for (i = 0; i < 13; i++) counts[i] = 0; for ( i = 0; i < NUM; i++) roll = rand() % 6 + rand() %6 + 2 counts[roll]++; for (i = 2; i < 13; i++) printf(“There were %d rolls of %d\n”, counts[i],i); }

  5. Where Are the Variables? Stack D Y N A M I C i; roll; counts Currently not in use Currently not in use Space for 13 ints – pointed to by counts Heap Num “There were %d rolls of %d\n” Static Space

  6. Runtime Stack Activation record for Hanoi; 1 2 3 1 Activation record for Hanoi; 1 3 2 2 Activation record for Hanoi; 1 2 3 3 Activation record for Hanoi; 1 3 2 4 Activation Record for Main Activation record for main

  7. Support for Function Calls • Call usually simple, but setup not • call printf • what comes before and after call? • Support recursion? • No --- simple, use static space • Yes --- runtime stack of activation record(s) • Return value(s)

  8. Activation Record Information • Parameters • Locals • Compiler Temporaries • Register Save/Restore • Previous Activation Record • Previous Scope • Anything else?

  9. A Function Call Convention • fp and sp defined by assembler • Caller function (in order) • push parameters on stack, in reverse • push fp • fp = sp - 4 • call callee • fp = 0 (fp) • sp = sp – (size of arguments + 4) • Callee function (in order) • sp = sp + size of function • execute function • sp = sp – size of function • return

  10. An Activation Record Next stack location – beyond the stack sp Reg save … Reg save … Reg save … Temps … 8(fp) – local 2 4(fp) – local 1 fp 0(fp) – old fp -4(fp) – parameter 1 -8(fp) – parameter 2 -12(fp) – parameter 3

  11. Function Call Convention (2) • Alpha conventions • Parameters passed in registers, r16 - r24 or d16 - d24 • Return in r0 (or d0) • Registers r1 - r8, d1 - d8 are NOT saved across function call invocations (caller save) • Registers r25 - r31 and d25 - d31 ARE saved across function call invocations (callee save)

More Related