Is1200 datorteknik
This presentation is the property of its rightful owner.
Sponsored Links
1 / 72

IS1200 Datorteknik PowerPoint PPT Presentation


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

IS1200 Datorteknik. Föreläsning CE F3 Metoder / subrutiner Kursboken, delar av kapitel 4. IS1200 Datorteknik http://www.ict.kth.se/courses/IS1200. CE F1. CE F2. CE Ö1. CE F3. CE Ö2. Assemblerprogram. CE F4. CE Ö3. lab nios2time. C. CE F5. CE Ö4. hemlab C. In- och utmatning.

Download Presentation

IS1200 Datorteknik

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


Is1200 datorteknik

IS1200 Datorteknik

Föreläsning CE F3

Metoder / subrutiner

Kursboken, delar av kapitel 4

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik http www ict kth se courses is1200

IS1200 Datorteknikhttp://www.ict.kth.se/courses/IS1200

CE F1

CE F2

CE Ö1

CE F3

CE Ö2

Assemblerprogram

CE F4

CE Ö3

lab nios2time

C

CE F5

CE Ö4

hemlab C

In- och utmatning

CE F6

CE Ö5

CE Ö6

lab nios2io

Avbrott och "trap"

CE F7

CE Ö7

lab nios2int

Cacheminnen

CE F8

CE Ö8

hemlab cache

Trådar, synkronisering

CE F9

CE Ö9

hemlab trådar

CE F10

CE Ö10

tentamen

IS1200 Datorteknik o k, föreläsning CE - F3


Ppet hus v lkommen

”Öppet hus”välkommen

Öppet hus i labbsalen:

torsdag 19 januari kl 13-17 har vi öppet hus i sal 648.

Ingen bokning behövs för det här tillfället.- Du kan få hjälp att provköra labprogramvara på de stationära datorer som finns i salen- Vi svarar på frågor om labbarna och kursen.- Du kan få hjälp att installera labprogramvara- Du kan testa att din bärbara dator fungerar med vår hårdvara.

IS1200 Datorteknik o k, föreläsning CE - F3


F rel sning 3 inneh ll

Föreläsning 3Innehåll

  • 4- (och 5-) stegs PIPE-LINE, repetition

  • Nios-II, Instruktioner och -format

  • MACRO, pseudo-instruction,exempel

  • Load och Store med indexerad adress

  • Stack med SP samt PUSH och POP

  • Subrutiner, anrop, retur, parametrar

  • Activation Record, aktiveringsblock

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

Litteraturhänvisningar

  • Kursboken, valda delar av kapitel 4

  • 4.1 -- 4.3 principer, ej MIPS-kod

  • 4.5 Subrutiner och Stack

IS1200 Datorteknik o k, föreläsning CE - F3


4 viktiga delar i en dator

4 Viktiga delar i en dator

CPU

BUS

program

I/O

MEM

data

IS1200 Datorteknik o k, föreläsning CE - F3


Programexekvering i tv steg

FETCH

(update PC)

(decode)

EXECUTE

Programexekveringi två steg

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

Fetch

Operand

Write

Back

Fetch

Instruction

Register

File

32 x 32

EXecute/

MEMory

PC+4PC+Imm

Program

Memory

m x 8

Register

File

32 x 32

Programexekveringi fyra steg

ADD

PC

RWM

true/false

ALU

op-code

NVZC

Logik för

villkorligt

hopp

Cond

IS1200 Datorteknik o k, föreläsning CE - F3


Villkorliga hopp kvar att fundera ver

Villkorliga hoppKvar att fundera över

  • När beräknas hoppadress

  • När ”beräknas” villkor

  • Var finns all kontroll-logik och avkodning av instruktioner

    Detta diskuteras i boken och tas eventuellt upp senare i kursen

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

Program

Memory

n x 16

FI

FO

ALU/EXE

MEM

NYTT

WB

Register

File

32 x 32

CPU med 5 stegs PIPE-LINE

Register

File

32 x 32

IR0

PC+n

PC+Imm

ADD

IR1

PC

+2

ALU

IR2

RWM

IR3

September 15, 2010

IS1500 Datorteknik o k, föreläsning CE - F2

IS1200 Datorteknik o k, föreläsning CE - F3

10


Instruktioner i v r 4 stegs cpu

Instruktioner i ”vår” 4-stegs CPU

  • ADDRdst, RsrcA , RsrcB # SUB/AND/OR/XOR

  • ADDIRdst, RsrcA , Imm# SUBI/ANDI/ORI/XORI

  • JMP / BR# ovillkorliga hopp

  • LDWRdst , (Rsrc)# LOAD

  • STWRsrc , (Rdst) # STORE

  • CMPRsrcA , RsrcB

  • CMPIRsrcA , Imm

  • BCond# villkorliga hopp

  • R0 = 0 ger ytterligare funktioner, NOP, CLR, COPY/MOVE

IS1200 Datorteknik o k, föreläsning CE - F3


Inneh ll i register r0 om det alltid r 0

Innehåll i register r0 om det alltid är 0

  • Det medför att

  • ADD r0, r0, r0 utför NOP, No OPeration

  • ADD rA, r0, r0 utför CLR rA, CLeaR reg

  • ADD rA, rB, r0 utför COPY rA  rB, MOV

  • ADDI rA, rB, 0 utför ”MOV rA, rB”

  • ADDI rA, r0, Imm utför ”MOVI rA, Imm”

  • ...

IS1200 Datorteknik o k, föreläsning CE - F3


Instruktioner nios ii instruktioner

Instruktioner Nios-II-Instruktioner

  • MOVRdst, Rsrc

  • MOVIRdst, Imm16# ADDI/SUBI

  • ADDRdst, RsrcA , RsrcB # SUB/AND/OR/XOR

  • ADDIRdst, RsrcA , Imm# SUBI/ANDI/ORI/XORI

  • BR / JMP / BCond

  • LDWRdst , offset(Rsrc)# indexerad adress

  • STWRsrc , offset(Rdst)# indexerad adress

  • CMPCondRdst, RsrcA , RsrcB # CMPICond/Set on Cond

  • Forts.

IS1200 Datorteknik o k, föreläsning CE - F3


Cmp set on condition nios ii instructions

CMP: ”Set on Condition”Nios-II-instructions

  • CMPEQ Rdst, rA, rB

    if rA==rB then Rdst := 1 else Rdst := 0

  • CMPcond Rdst, rA, rB

    if ”true” then Rdst := 1 else Rdst := 0

    cond = EQ, NE, GT, GE, ...

    1 = ”True”, 0 = ”False”

IS1200 Datorteknik o k, föreläsning CE - F3


Branch on condition nios ii instructions

Branch on ConditionNios-II-instructions

  • BEQ rA, rB, Label

    if rA==rB then PC:=PC+Imm16else PC:=PC+4

  • Bcond rA, rB, Label

    if ”true” then PC:=PC+Imm16else PC:=PC+4

    cond = EQ, NE, GT, GE, ...

    Label = PCBEQ + 4 + Imm16

    Imm16 = Label - PCBEQ - 4

IS1200 Datorteknik o k, föreläsning CE - F3


Macro instruction pseudo instruktion

Macro-instructionPseudo-instruktion

TYPEXEMPEL – MALL

.macroNOP

ADDr0, r0, r0

.endm

Effekt: man kan använda en ny (pseudo-) instruktion

NOP – No Operation – som inte gör något mer än att förbruka tid

(case sensitive !!!)

IS1200 Datorteknik o k, föreläsning CE - F3


Macro instruction pseudo instruktion1

Macro-instructionPseudo-instruktion

TYPEXEMPEL – MALL

.macroCLR reg

MOVI\reg, 0x0

.endm

Effekt: man kan använda en ny (pseudo-) instruktion

CLR ri för att nollställa register ri

MOVI implementeras med ADDI !!!

(case sensitive !!!)

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

NEG reg

Skriv makro för NEG-instruktion

.macroNEG reg

SUB\reg, r0, \reg

.endm

Effekt: man kan använda en ny (pseudo-) instruktion

NEG rA, för att ta fram 2-komplementet

av innehållet i ett register, rA

(case sensitive !!!)

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

SWAPR regA, regB

(utmaning)

Skriv makro för swap-instruktion med 2 register

.macroSWAPR reg1, reg2XOR\reg1, \reg1, \reg2...#här saknas en del...#icketrivial kod

.endm

Effekt: man kan använda en ny (pseudo-) instruktion

SWAPR rA, rB för att byta plats på

innehåll i rA och rB (begräsningar ?)

IS1200 Datorteknik o k, föreläsning CE - F3


N got om nios ii instruktionsformat

Något om Nios-IIInstruktionsformat

Nios-II-processorn

Varje instruktion i Nios-II upptar 32 bitar !

Det finns endast 3 olika instruktionsformat

  • R-format

  • I-format

  • J-format

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

INSTRUKTIONSFORMAT

Nios-II: R-type

add rC, rA, rB#rC  rA + rB

A

B

C

OPX

OP

5 5 5 11 6

Andra exempel: sub, and, or, xor, ...

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

INSTRUKTIONSFORMAT

Nios-II: I-type

addi rB, rA, IMM16#rB  rA + sext(IMM16)

A

B

IMM16

OP

5 5 16 6

Andra exempel: subi, andi, ori, orhi, xori, ...

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

INSTRUKTIONSFORMAT

Nios-II: J-type

call label#PC  (PC31..28 :IMM26x4)

IMM26

OP

26 6

Enda exempel: call !!! (och snart JMPI)

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

ori rB, rA, IMM16

Instruktion i Nios-2, I-type

ori rB, rA, IMM16 #rB  rA | (0x0000:IMM16)

A

B

IMM16

OP

5 5 16 6

Komplettera IMM16 med nollor

i de 16 mest signifikanta bitarna.

Gör or-operation med innehåll i rA

Skriv resultat till rB

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

orhi rB, rA, IMM16

Instruktion i Nios-2, I-type

orhi rB, rA, IMM16 #rB  rA | (IMM16:0x0000)

A

B

IMM16

OP

5 5 16 6

Komplettera IMM16 med nollor

i de 16 minst signifikanta bitarna.

Gör or-operation med innehåll i rA

Skriv resultat till rB

IS1200 Datorteknik o k, föreläsning CE - F3


Ladda ett register med ett konstant v rde nios ii

Ladda ett register med ettkonstant värde, Nios-II

  • 16-bitars värde

    MOVI rB, IMMED

    movi r6, -30#sign extension to 32 bits

    ”movi is implemented as addi rB, r0, IMMED”

  • 32-bitars värde

    MOVIA rB, Value#Value is any 32 bits

    might be implemented as (but it is not!?)

    orhirB, r0, %hi(Value)#fyller ut med nollor

    orirB, rB, %lo(Value) #fyller ut med nollor

IS1200 Datorteknik o k, föreläsning CE - F3


Hj lp fr n vers ttaren

Hjälp från översättaren

%hi (value)

%lo (value)

= value32

Imm116

Imm216

orhirB, r0, %hi(Value)#fyller ut med nollor

orirB, rB, %lo(Value) #fyller ut med nollor

orhirB, r0, Imm1#fyller ut med nollor

orirB, rB, Imm2 #fyller ut med nollor

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

MOVIA Rdest, Addr

Nios-II macro

Skriv makro för ladda register med 32 bitars värde

.macroMOVI32 reg, value

ORHI\reg, r0, %hi(\value)ORI\reg, \reg, %lo(\value)

.endm

OBS att inga registerinnehåll “förstörs”

MOVIA är implementerad på annat sätt!

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

Fetch

Operand

Write

Back

Fetch

Instruction

Register

File

32 x 32

EXecute/

MEMory

PC+k/PC+Imm

Program

Memory

m x 8

Register

File

32 x 32

LOAD och STOREi fyra stegs pipeline

ADD

PC

RWM

true/false

ALU

op-code

NVZC

Logik för

villkorligt

hopp

CCR

IS1200 Datorteknik o k, föreläsning CE - F3


Load och store i 4 stegs pipeline

LOAD och STOREi 4 stegs pipeline

Vi kan utföra instruktionernaLDWRdst, (Raddr)STW Rsrc , (Raddr)

IS1200 Datorteknik o k, föreläsning CE - F3


Behov av indexerad adress

Behov av indexerad adress

  • Programvariabler ligger samlade

  • Ett register pekar ut variabelarean

  • Varje LOAD/STORE behöver först en adressberäkning med ADD

  • Indexerad adress

    LOAD R2 ← 8(R28); R2 ← hm(r28 + 8)

  • Sparar en klockcykel vid varje LOAD/STORE

IS1200 Datorteknik o k, föreläsning CE - F3


Programvariabler placeras samlade i minnet

Programvariabler placerassamlade i minnet

  • Variabler

    int i;

    int j;

    int k;

  • läggs efter varanni minnet av kompilatorn

minne

i

j

k

IS1200 Datorteknik o k, föreläsning CE - F3


Ett register pekar ut variabelarean

minne

Ett register pekar ut variabelarean

  • Vid programstart tilldelas registret adressen till variabelarean i minnet

  • Global pointer är r26 i Nios-II

i

j

register

k

r26

IS1200 Datorteknik o k, föreläsning CE - F3


Varje load store beh ver adressber kning med add

minne

Varje LOAD/STORE behöver adressberäkning med ADD

  • k ska hämtas till R2

  • R17 är ledigt

  • ADDI R17 <- R26 + 8

  • LOAD R2 <- (R17)

  • En extra instruktion

  • En extra klockcykel

  • Extra krångel i programkoden

i

j

register

k

r26

IS1200 Datorteknik o k, föreläsning CE - F3


Indexerad adress

minne

Indexerad adress

  • Addition i LOAD-instruktionen

  • LOAD R2 ← 8(R26)

  • innebärR2 ← hm(r26+8)

  • Innehåll i R26, plus talet 8, blir minnesadress

i

j

register

k

r26

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

LOAD och STORE

I Nios-II finns instruktionernaLDWRdst, Offset (Raddr )STW Rsrc , Offset( Raddr )

(De kan utföras i en 5 stegs pipeline)

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

Typisk hopp-instruktionJUMP (Raddr)

  • Kopiera registerinnehåll till PC

  • Register med 32 bitar betyder att32 bits adress kan användas

  • Hur får man 32 bits adress till registret ?

  • MOVIA Raddr , Imm32 eller motsvarande

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

Nios-II hopp-instruktionJMP rA

  • Kopiera innehållet i angivet register till PC

IS1200 Datorteknik o k, föreläsning CE - F3


Om man vill kan man inf ra eget makro jumpa addr

Om man vill kan man införaeget makro: JUMPA addr

# Ladda ett 32 bitars värde till PC

# Hopp med absolutadressering

.macroJUMPA addrMOVIAr1, \addrJMPr1

.endm

OBS att innehåll i reg r1 “förstörs”

r1 kallas även “at” – assembler temporary

IS1200 Datorteknik o k, föreläsning CE - F3


Metoder funktioner subrutiner

Metoder, funktioner, subrutiner

  • Hur sker anrop ?

  • Med “hopp”-instruktion !

  • Hur sker återhopp ?

  • Med “hopp”-instruktion !

  • Returadress måste lagras ! Var ?

  • I register eller minne !

IS1200 Datorteknik o k, föreläsning CE - F3


Subrutinanrop

Subrutinanrop

RUT:ADD …

RETURN

CALL RUT

RET1:ADD …

CALL RUT

RET2:SUB ...

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

Subrutinanrop i flera nvåer(nested procedures)

RUT:ADD …

CALL FKN

RETURN

FKN:MUL …

CALL NEW

RETURN

CALL RUT

RET1:ADD …

CALL RUT

RET2:SUB ...

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

Subrutinanrop, rekursion

RUT:ADD …

CALL RUT

RETURN

CALL RUT

RET1:ADD …

CALL RUT

RET2:SUB ...

IS1200 Datorteknik o k, föreläsning CE - F3


Metoder funktioner subrutiner1

metoder, funktioner, subrutiner,

Hur sker parameteröverföringVar lagras parametrar (register/minne)

  • från anropare till rutinen, inparametrar

  • från rutinen till anroparen, returvärden

    Olika typ av parameter

  • värde

  • pekare

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

Nios-II hopp-instruktionCALLR rA

Liknar JMP rA med tillägg att

  • Returadress sparas i register r31

    Returadressen är adressen till instruktionen närmast efter CALLRdvs adress till CALLR ökat med 4 !

IS1200 Datorteknik o k, föreläsning CE - F3


Om man vill kan man inf ra eget makro calla addr

Om man vill kan man införaeget makro: CALLA addr

# Subrutinanrop med absolutadressering

.macroCALLA addrMOVIAr1, \addrCALLRr1

.endm

# OBS att innehåll i reg r1 “förstörs”

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

Nios-II hopp-instruktionCALL Label

Liknar CALLA med begränsning att

Label måste ligga inom det 256MB område

som anges av de 4 mest signifikanta bitarna

i PC

IS1200 Datorteknik o k, föreläsning CE - F3


Stackhantering

Stackhantering

  • Stack är speciell reserverad plats i minnet

  • stack-pekare pekar på plats i stacken

  • PUSH-operation, lägg på stack

  • POP-operation, hämta från stack

IS1200 Datorteknik o k, föreläsning CE - F3


Stack operationer push och pop

STACKoperationer PUSH och POP

PUSH op:

SP  sp - nmem(sp)  op

POPdst:

dst  mem(sp)

SP  sp + n

n = antal bytes

-

Stack Pointer

SP

+

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

Nios-II: PUSH reg

#Pusha ett register på stacken

.macroPUSH regSUBIsp, sp, 4#sp = r27STW\reg, 0(sp)

.endm

#PUSH sp är inte bra

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

Nios-II: POP reg

#Poppa ett register från stacken

.macroPOP regLDW\reg,0(SP) ADDIsp, sp, 4#sp = r27

.endm

# POP sp är förödande

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

Nios-II: StackReservera plats, initiera SP

.equ size , 256

.data

.align2

stack: .fill size, 4, 0

...

.text

movia sp, stack+size*4

-

stack:

Stack Pointer

SP

+

Behöver / SKA inte göras i laborationsprogramvaran !

IS1200 Datorteknik o k, föreläsning CE - F3


Nios ii st d f r stack

Nios-II stöd för stack

  • Stack Pointer = r27 = sp

  • Finns det Stack-operationer ? Nej ! Jo!

  • LDW reg, offset(sp)

  • STW reg, offset(sp)

  • Ingen PUSH- eller POP-instruktion

  • Inga subrutinanrop och returhopp med returadress på stack

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

Nios-II stöd för subrutiner

  • Anrop med CALLR reg, returadress i register r31 = ra

  • Retur med RETsom medför att r31 kopieras till PC

  • JMP r31 är “illegal”(ger fel vid översättning eller vid exekvering)

IS1200 Datorteknik o k, föreläsning CE - F3


Allm nt var placeras returadress vid subrutinanrop

Allmänt: Var placerasReturadress vid subrutinanrop

  • I ett speciellt register (fördel/nackdel)

  • I minnet på en stack med ”PUSH” (fördel/nackdel)

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

Parameterplatstill och från subrutin

  • I register (fördel/nackdel)

  • I minnet på en stack (fördel/nackdel)

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

Exempel på parameteröverföringNios-II: i r4-r7 och r2-r3

  • Anroparen lagrar in-parametrar i r4-r7

  • Anroparen gör CALL eller CALLR varvidreturadress sparas i r31

  • In-Parametrar finns i r4-r7

  • Det finns 8 ”lediga” register, r8-r15

  • Returvärde ska placeras i r2-r3

  • Returadress finns i r31, retur ska göras med RET

IS1200 Datorteknik o k, föreläsning CE - F3


Is1200 datorteknik

Anrop av subrutin från subrutin”nested subroutine call”

  • Viktiga registerinnehåll måste skyddas

  • Stacken används för att skydda register.

  • Speciellt returadress i r31/ra måste skyddas

  • Anroparen, caller, har ansvar för register r8-r15caller saved. De får förstöras av den anropade.

  • Den anropade, callee, har ansvar att inte förändra innehåll i r16-r23, callee saved

  • Parametrar i r4-r7 och r2-r3 måste hanteras rätt

IS1200 Datorteknik o k, föreläsning CE - F3


Activation record vid funktionsanrop

Activation Recordvid Funktionsanrop

Stacken används av många kompilatorervid funktionsanrop för att i ett aktiveringsblock lagra informationen

  • Inparametrar

  • Återhoppsadress

  • Lokala variabler

  • ...

IS1200 Datorteknik o k, föreläsning CE - F3


Activation record lagring av inparametrar

Activation Recordlagring av inparametrar

param-1

param-2

param-n

push param-n

...

push param-2

push param-1

Stack Pointer

-

SP

old top

+

IS1200 Datorteknik o k, föreläsning CE - F3


Activation record funktionsanrop returadress

Activation Recordfunktionsanrop, returadress

param-1

param-2

param-n

push param-n

...

push param-2

push param-1

callmethod

Stack Pointer

-

SP

old top

+

IS1200 Datorteknik o k, föreläsning CE - F3


Activation record spara return address

Activation RecordSpara return address

param-1

param-2

param-n

method:

push ra

Stack Pointer

-

retaddr

SP

old top

+

IS1200 Datorteknik o k, föreläsning CE - F3


Activation record skapa en frame pointer

Activation RecordSkapa en Frame Pointer

param-1

param-2

param-n

method:

push ra

move fp, sp

Stack Pointer

-

retaddr

SP

Frame Pointer

FP

old top

+

Frame pointer är

r28 i Nios-II

IS1200 Datorteknik o k, föreläsning CE - F3


Activation record reservera plats f r local variables

Activation RecordReservera plats för Local variables

locvar-2

locvar-1

retaddr

param-1

param-2

param-n

method:

push ra

move fp, sp

subisp, sp, n*4

Stack Pointer

-

SP

Frame Pointer

FP

old top

+

IS1200 Datorteknik o k, föreläsning CE - F3


Operandutpekning i metoden adress relativt frame pointer

Operandutpekning i metodenAdress relativt frame pointer

locvar-2

locvar-1

retaddr

param-1

param-2

param-n

param-1 = 1n(fp)

param-2 = 2n(fp)

param-k = kn(fp)

...

locvar-1 = -1n(fp)

locvar-2 = -2n(fp)

Stack Pointer

-

SP

Frame Pointer

FP

+

IS1200 Datorteknik o k, föreläsning CE - F3


Activation record return operation

Activation Recordreturn operation

locvar-2

locvar-1

retaddr

param-1

param-2

param-n

method:

push ra

move fp, sp

subisp, sp, n*4

”work”

movsp, fp

popra

ret

X

Stack Pointer

-

X

SP

Frame Pointer

FP

old top

+

IS1200 Datorteknik o k, föreläsning CE - F3


Activation record after return to caller

Activation Recordafter return to caller

param-1

param-2

param-n

push param-n

...

push param-2

push param-1

callmethod

Stack Pointer

-

SP

old top

+

IS1200 Datorteknik o k, föreläsning CE - F3


Activation record after return to caller1

Activation Recordafter return to caller

param-1

param-2

param-n

push param-n

...

push param-2

push param-1

callmethod

addi sp, sp, 4*n

Stack Pointer

-

SP

old top

+

IS1200 Datorteknik o k, föreläsning CE - F3


F rel sning 3 inneh ll1

Föreläsning 3Innehåll

  • 4- och 5-stegs PIPE-LINE, repetition

  • Nios-II, Instruktioner och -format

  • MACRO, pseudo-instruction,exempel

  • Load och Store med indexerad adress

  • Stack med SP samt PUSH och POP

  • Subrutiner, anrop, retur, parametrar

  • Activation Record, aktiveringsblock

IS1200 Datorteknik o k, föreläsning CE - F3


Spara returadress register vid nestade anrop

Spara returadress-registervid nestade anrop

# use r8 to r15, do no use r16- r23

subrutin:pushr31

...

callannan1# use r8 to r15

callannan2# use r8 to r15

...

popr31

ret

IS1200 Datorteknik o k, föreläsning CE - F3


Spara arbets register vid nestade anrop alt 1

Spara arbets-registervid nestade anrop, alt 1

# use r8 to r15, do no use r16- r23

subrutin:pushr31

use r8 to r15

...

pushr8 to r15

callannan1#use r8 to r15

callannan2#use r8 to r15

popr15 to r8

...

use r8 to r15

popr31

ret

IS1200 Datorteknik o k, föreläsning CE - F3


Spara register vid nestade anrop alt 2

Spara registervid nestade anrop, alt 2

# use r8 to r15, do no use r16- r23

subrutin:pushr31

pushr16 to r23

user16 to r23

callannan1#use r8 to r15

callannan2#use r8 to r15

use r16 to r23

popr23 to r16

popr31

ret

IS1200 Datorteknik o k, föreläsning CE - F3


  • Login