Problem
This presentation is the property of its rightful owner.
Sponsored Links
1 / 23

Problem: PowerPoint PPT Presentation


  • 86 Views
  • Uploaded on
  • Presentation posted in: General

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

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.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! 3Jr $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 stackPop from stack into $a2

    Addi $sp $sp -4Lw $a2 0($sp)

    Sw $t5 0($sp)Addi $sp $sp 4


Wrong

Wrong!!!!!

Push $t5 onto stackPop from stack into $a2

Sw $t5 -4($sp)Addi $sp $sp 4

Addi $sp $sp -4Lw $a2 -4($sp)

This method writesNever use a negative

beyond T.O.S first,displacement with

then fixes $sprespect 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

  • bexit

  • 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)


  • Login