1 / 23

Problem:

Problem:. ! bell ! help ! ! 1 ! 2 ! ! Bal help ! ! ! ! Bal bell ! 3 Jr $31 ! ! ! ! ! ! ! Jr $31 !. What happend here?. What will happen here?. The activation concept. Main. 1. Executing program, wants “bell”

eman
Download Presentation

Problem:

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. Problem: ! bell ! help ! ! 1 ! 2 ! ! Bal help ! ! ! ! Bal bell ! 3 Jr $31 ! ! ! ! ! ! ! Jr $31 ! What happend here? What will happen here?

  2. The activation concept Main 1. Executing program, wants “bell” 2. Creates son, Tells him “bell”, Falls asleep

  3. The activation concept 1. Wakes up, starts executing “bell”, wants “help” Son Main 1. Executing program, wants “bell” 2. Creates son, Tells him “bell”, Falls asleep 3. Asleep

  4. The activation concept Grandson 1. Wakes up, starts executing “bell”, wants “help” 2. Creates son, tells him help, falls asleep Son Main 1. Executing program, wants “bell” 2. Creates son, Tells him “bell”, Falls asleep 3. Asleep

  5. The activation concept Grandson 1. Wakes up. starts executing “help” 1. Wakes up, starts executing “bell”, wants “help” 2. Creates son, tells him help, falls asleep 3. Asleep Son Main 1. Executing program, wants “bell” 2. Creates son, Tells him “bell”, Falls asleep 3. Asleep

  6. The activation concept Grandson 1. Wakes up. starts executing “help” 2. Finished. Vanishes, Wakes up his parent 1. Wakes up, starts executing “bell”, wants “help” 2. Creates son, tells him help, falls asleep 3. Asleep Son Main 1. Executing program, wants “bell” 2. Creates son, Tells him “bell”, Falls asleep 3. Asleep

  7. The activation concept 1. Wakes up, starts executing “bell”, wants “help” 2. Creates son, tells him help, falls asleep 3. Asleep 4. Finished, Vanishes, wakes up his parent Son Main 1. Executing program, wants “bell” 2. Creates son, Tells him “bell”, Falls asleep 3. Asleep

  8. The activation concept Main 1. Executing program, wants “bell” 2. Creates son, Tells him “bell”, Falls asleep 3. Asleep 4. Executing

  9. The main points: • We talk about activations,not the code being executed. • Last in - first out • implies a stack • OK for different activationsto share the same instructions

  10. A parents responsibilities to his unborn son: • Be prepared for the son to trash $tx-registers. • Put input arguments into $a0 - $a3. • Give him a return address (by Bal- instr.). • Tell him which code to execute (also by Bal).

  11. The son’s responsibility to his sleeping parent: • Leave the stack like he found it. • Return results (if any) into registers $v0 - $v1. • Leave the $ax-registers like he found them. • OK to change $tx-registers and not restore them.

  12. The activations responsibility to himself • Need space for local variables? • Create space on stack. Use $tx registers as scratchpads. • Want to change $ax-register? • Save the incoming values into local variables. • Want to create a son? • Protect the $tx-registers. • Protect the return address ($31). by saving them on the stack

  13. What does one activation own? • Return address to his parent. • His incoming parameters. • A place to put his results. • Some local variables. • Which code to execute (his PC). Called his “activation record”

  14. Stack the activation records: Grandson used activation record “grandson” Son (asleep) The concept gives unique context. saved activation record “son” Main (asleep) saved activation record “main”

  15. The user stack • $sp points to top- of- stack User stack (part of the data memory) $sp

  16. The user stack • Stack grows toward lower addresses. • Basic stack operations: Push $t5 onto stack Pop from stack into $a2 Addi $sp $sp -4 Lw $a2 0($sp) Sw $t5 0($sp) Addi $sp $sp 4

  17. Wrong!!!!! Push $t5 onto stack Pop from stack into $a2 Sw $t5 -4($sp) Addi $sp $sp 4 Addi $sp $sp -4 Lw $a2 -4($sp) This method writesNever use a negative beyond T.O.S first, displacement with then fixes $sp respect to T.O.S. reason: interrupts.

  18. Framepointer Low address <= $sp points here -8($fp) Var2 -4($fp) Var1 <= $fp points here 0($fp) Old fp 4($fp) Return addr Caller’s stack High address

  19. Example N Compute  i i=1 Define as recursive definition: 1 if N = 1 sum(N) = N + sum(N-1) otherwise

  20. Pseudocode Procedure sum(N:integer):integer; if (N=1) then return (1) else T := N + sum(N-1); return (T) end;

  21. Where do we start? • Parameter comes in in $a0. • Return address in $31. • This activation will probably need a son (because of the recursion) so: • Local variables. • save $31. • save $a0. • the variable T?

  22. The Code • sum: addi $sp $sp -4 #store return address on stack • sw $31 0($sp) • addi $sp $sp -4 #store incoming parameter on stack • sw $a0 0($sp) • if: ori $t0 $r0 1 #test: fixed point? • bne $a0 $t0 else • then: ori $v0 $r0 1 • b exit • else: addi $a0 $a0 -1 #sum(N-1) in $v0, original $a0 lost • bal sum #recursive call to sum • lw $t0 0($sp) #retrive the incoming parameter value • add $v0 $v0 $t0 #$v0 has N + T • exit: lw $31 4($sp) #restore return address • addi $sp $sp 8 #Stack cleaned • jr $31 #end activation

  23. Procedure Call • Place parameters in a place where the procedure can access them ($a0 - $a3) • Transfer control to the procedure (bal bell) • Acquire the storage resources needed for the procedure. • Perform the desired task. • Place the result value in a place where the calling program can access it. ($v0 - $v1) • Return control to the point of origin.(jr $31)

More Related