Problem
Download
1 / 23

Problem: - PowerPoint PPT Presentation


  • 106 Views
  • Uploaded on

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 ”

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Problem:' - tadhg


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
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
The activation concept

Main

1. Executing program, wants “bell”

2. Creates son,

Tells him “bell”,

Falls asleep


The activation concept1
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


The activation concept2
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


The activation concept3
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


The activation concept4
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


The activation concept5
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


The activation concept6
The activation concept

Main

1. Executing program, wants “bell”

2. Creates son,

Tells him “bell”,

Falls asleep

3. Asleep

4. Executing


The main points
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


A parents responsibilities to his unborn son
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).


The son s responsibility to his sleeping parent
The son’s responsibility to his sleeping parent:

  • Leave the stack like he found it.

  • Return results (if any) into registers $v0 - $v1.

  • OK to change $tx/$ax-registers and not restore them.


The activations responsibility to himself
The activations responsibility to himself

  • Need space for local variables?

    • Create space on stack. Use $tx registers as scratchpads.

  • Want to create a son?

    • Protect the $tx and $ax-registers if needed.

    • Protect the return address ($31).

      by saving them on the stack


What does one activation own
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”


Stack the activation records
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”


The user stack
The user stack

  • $sp points to top- of- stack

User stack

(part of the

data memory)

$sp


The user stack1
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


Wrong
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.


Framepointer
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


Example
Example

N

Compute  i

i=1

Define as recursive definition:

1 if N = 1

sum(N) =

N + sum(N-1) otherwise


Pseudocode
Pseudocode

Procedure sum(N:integer):integer;

if (N=1) then

return (1)

else

T := N + sum(N-1);

return (T)

end;


Where do we start
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?


The code
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


Procedure call
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)


ad