is1200 datorteknik

72
December 31, 202 1 IS1200 Datorteknik o k, föreläsning CE - F3 1 IS1200 Datorteknik Föreläsning CE F3 Metoder / subrutiner Kursboken, delar av kapitel 4

Upload: bradley-humphrey

Post on 03-Jan-2016

51 views

Category:

Documents


2 download

DESCRIPTION

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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 1

IS1200 Datorteknik

Föreläsning CE F3Metoder / subrutiner

Kursboken, delar av kapitel 4

Page 2: IS1200 Datorteknik

IS1200 Datorteknik http://www.ict.kth.se/courses/IS1200

Assemblerprogram

C

In- och utmatning

Avbrott och "trap"

CacheminnenTrådar, synkronisering

CE F1

CE F3

CE F4

CE F5

CE F6

CE F7

CE F8

CE F9

CE F2

CE Ö4

CE Ö1

CE Ö2

CE Ö3

CE Ö7

CE Ö8

CE Ö9

CE Ö5 CE Ö6

lab nios2time

hemlab C

lab nios2io

lab nios2int

hemlab cache

hemlab trådar

CE F10 CE Ö10 tentamen

April 20, 2023 2IS1200 Datorteknik o k,

föreläsning CE - F3

Page 3: IS1200 Datorteknik

”Ö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.

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 3

Page 4: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 4

Föreläsning 3Innehåll

4- (och 5-) stegs PIPE-LINE, repetitionNios-II, Instruktioner och -formatMACRO, pseudo-instruction,exempelLoad och Store med indexerad adressStack med SP samt PUSH och POPSubrutiner, anrop, retur, parametrarActivation Record, aktiveringsblock

Page 5: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 5

Litteraturhänvisningar

Kursboken, valda delar av kapitel 4 4.1 -- 4.3 principer, ej MIPS-kod4.5 Subrutiner och Stack

Page 6: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 6

4 Viktiga delar i en dator

CPU

MEM

BUS

I/Oprogram

data

Page 7: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 7

Programexekveringi två steg

(decode)EXECUTE

FETCH(update PC)

Page 8: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 8

Programexekveringi fyra steg

EXecute/MEMory

Fetch Operand

WriteBack

FetchInstruction

ProgramMemory

m x 8

ALU

ADD

RegisterFile

32 x 32

RegisterFile

32 x 32

PC

NVZC

Logik förvillkorligt

hopp

op-code

Cond

true/false

PC+4PC+Imm

RWM

Page 9: IS1200 Datorteknik

Villkorliga hoppKvar att fundera över

När beräknas hoppadressNär ”beräknas” villkorVar finns all kontroll-logik och

avkodning av instruktioner

Detta diskuteras i boken och tas eventuellt upp senare i kursen

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 9

Page 10: IS1200 Datorteknik

September 15, 2010IS1500 Datorteknik o k,

föreläsning CE - F2 10

CPU med 5 stegs PIPE-LINE

RegisterFile

32 x 32

ProgramMemoryn x 16

ALU

PCADD

IR0

IR1

IR2

IR3

+2

RegisterFile

32 x 32

RWM

PC+nPC+Imm

ALU/EXE

FO

MEM

FI

WB

NYTT

April 20, 2023 10IS1200 Datorteknik o k,

föreläsning CE - F3

Page 11: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 11

Instruktioner i ”vår” 4-stegs CPU

ADD Rdst, RsrcA , RsrcB # SUB/AND/OR/XOR

ADDI Rdst, RsrcA , Imm # SUBI/ANDI/ORI/XORI JMP / BR # ovillkorliga hopp LDW Rdst , (Rsrc) # LOAD

STW Rsrc , (Rdst) # STORE CMP RsrcA , RsrcB CMPI RsrcA , Imm BCond # villkorliga hopp R0 = 0 ger ytterligare funktioner, NOP, CLR,

COPY/MOVE

Page 12: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 12

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

Det medför attADD r0, r0, r0 utför NOP, No OPerationADD rA, r0, r0 utför CLR rA, CLeaR regADD rA, rB, r0 utför COPY rA rB, MOVADDI rA, rB, 0 utför ”MOV rA, rB”ADDI rA, r0, Imm utför ”MOVI rA, Imm”...

Page 13: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 13

Instruktioner Nios-II-Instruktioner

MOV Rdst, Rsrc

MOVI Rdst, Imm16 # ADDI/SUBI

ADD Rdst, RsrcA , RsrcB # SUB/AND/OR/XOR

ADDI Rdst, RsrcA , Imm # SUBI/ANDI/ORI/XORI BR / JMP / BCond LDW Rdst , offset(Rsrc) # indexerad adress

STW Rsrc , offset(Rdst) # indexerad adress

CMPCond Rdst, RsrcA , RsrcB # CMPICond/Set on

Cond Forts.

Page 14: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 14

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”

Page 15: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 15

Branch on ConditionNios-II-instructions

BEQ rA, rB, Label

if rA==rB then PC:=PC+Imm16 else PC:=PC+4

Bcond rA, rB, Label

if ”true” then PC:=PC+Imm16 else PC:=PC+4

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

Label = PCBEQ + 4 + Imm16

Imm16 = Label - PCBEQ - 4

Page 16: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 16

Macro-instructionPseudo-instruktion

TYPEXEMPEL – MALL

.macro NOPADD r0, r0, r0

.endm

Effekt: man kan använda en ny (pseudo-) instruktionNOP – No Operation – som inte gör något mer än att förbruka tid (case sensitive !!!)

Page 17: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 17

Macro-instructionPseudo-instruktion

TYPEXEMPEL – MALL

.macro CLR regMOVI\reg, 0x0

.endm

Effekt: man kan använda en ny (pseudo-) instruktionCLR ri för att nollställa register riMOVI implementeras med ADDI !!!(case sensitive !!!)

Page 18: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 18

NEG reg

Skriv makro för NEG-instruktion.macro NEG reg SUB \reg, r0, \reg

.endmEffekt: man kan använda en ny (pseudo-) instruktionNEG rA, för att ta fram 2-komplementet av innehållet i ett register, rA(case sensitive !!!)

Page 19: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 19

SWAPR regA, regB(utmaning)

Skriv makro för swap-instruktion med 2 register.macro SWAPR reg1, reg2XOR \reg1, \reg1, \reg2... #här saknas en del... #icketrivial kod

.endmEffekt: man kan använda en ny (pseudo-) instruktionSWAPR rA, rB för att byta plats på innehåll i rA och rB (begräsningar ?)

Page 20: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 20

Något om Nios-IIInstruktionsformat

Nios-II-processornVarje instruktion i Nios-II upptar 32 bitar

!Det finns endast 3 olika

instruktionsformat R-format I-format J-format

Page 21: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 21

add rC, rA, rB #rC rA + rB

INSTRUKTIONSFORMATNios-II: R-type

5 5 5 11 6A B OPX OPC

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

Page 22: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 22

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

INSTRUKTIONSFORMATNios-II: I-type

5 5 16 6A B IMM16 OP

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

Page 23: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 23

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

INSTRUKTIONSFORMATNios-II: J-type

26 6OPIMM26

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

Page 24: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 24

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

ori rB, rA, IMM16Instruktion i Nios-2, I-type

5 5 16 6A B IMM16 OP

Komplettera IMM16 med nollori de 16 mest signifikanta bitarna.Gör or-operation med innehåll i rASkriv resultat till rB

Page 25: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 25

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

orhi rB, rA, IMM16Instruktion i Nios-2, I-type

5 5 16 6A B IMM16 OP

Komplettera IMM16 med nollori de 16 minst signifikanta bitarna.Gör or-operation med innehåll i rASkriv resultat till rB

Page 26: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 26

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

16-bitars värdeMOVI rB, IMMEDmovi 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 bitsmight be implemented as (but it is not!?)orhi rB, r0, %hi(Value) #fyller ut med nollorori rB, rB, %lo(Value) #fyller ut med

nollor

Page 27: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 27

Imm116

Hjälp från översättaren

%hi (value)%lo (value)

Imm216= value32

orhi rB, r0, %hi(Value) #fyller ut med nollorori rB, rB, %lo(Value) #fyller ut med nollor

orhi rB, r0, Imm1 #fyller ut med nollorori rB, rB, Imm2 #fyller ut med nollor

Page 28: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 28

MOVIA Rdest, AddrNios-II macro

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

.macro MOVI32 reg, valueORHI \reg, r0, %hi(\value)ORI \reg, \reg, %lo(\value)

.endmOBS att inga registerinnehåll “förstörs”MOVIA är implementerad på annat sätt!

Page 29: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 29

LOAD och STOREi fyra stegs pipeline

EXecute/MEMory

Fetch Operand

WriteBack

FetchInstruction

ProgramMemory

m x 8

ALU

ADD

RegisterFile

32 x 32

RegisterFile

32 x 32

PC

NVZC

Logik förvillkorligt

hopp

op-code

CCR

true/false

PC+k/PC+Imm

RWM

Page 30: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 30

LOAD och STOREi 4 stegs pipeline

Vi kan utföra instruktionerna

LDW Rdst, (Raddr)

STW Rsrc , (Raddr)

Page 31: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 31

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

Page 32: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 32

Programvariabler placerassamlade i minnetVariabler

int i;int j;int k;

läggs efter varanni minnet av kompilatorn

minne

ijk

Page 33: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 33

Ett register pekar ut variabelarean

Vid programstart tilldelas registret adressen till variabelarean i minnet

Global pointer är r26 i Nios-II

minne

ijk

register

r26

Page 34: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 34

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

k ska hämtas till R2R17 är ledigtADDI R17 <- R26 + 8LOAD R2 <- (R17)En extra instruktionEn extra klockcykelExtra krångel i

programkoden

minne

ijk

register

r26

Page 35: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 35

Indexerad adress

Addition i LOAD-instruktionen

LOAD R2 ← 8(R26)

innebärR2 ← hm(r26+8)

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

minne

ijk

register

r26

Page 36: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 36

LOAD och STOREI Nios-II finns instruktionerna

LDW Rdst, Offset (Raddr )

STW Rsrc , Offset( Raddr )

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

Page 37: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 37

Typisk hopp-instruktionJUMP (Raddr)

Kopiera registerinnehåll till PCRegister med 32 bitar betyder att

32 bits adress kan användasHur får man 32 bits adress till

registret ?MOVIA Raddr , Imm32 eller

motsvarande

Page 38: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 38

Nios-II hopp-instruktionJMP rA

Kopiera innehållet i angivet register till PC

Page 39: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 39

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

# Ladda ett 32 bitars värde till PC# Hopp med absolutadressering.macro JUMPA addrMOVIA r1, \addrJMP r1

.endm

OBS att innehåll i reg r1 “förstörs”r1 kallas även “at” – assembler

temporary

Page 40: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 40

Metoder, funktioner, subrutiner

Hur sker anrop ?Med “hopp”-instruktion !Hur sker återhopp ?Med “hopp”-instruktion !Returadress måste lagras ! Var ?I register eller minne !

Page 41: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 41

Subrutinanrop

CALL RUTRET1: ADD …

CALL RUTRET2: SUB ...

RUT: ADD …

RETURN

Page 42: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 42

Subrutinanrop i flera nvåer(nested procedures)

CALL RUTRET1: ADD …

CALL RUTRET2: SUB ...

RUT: ADD …

CALL FKN

RETURN

FKN: MUL …

CALL NEW

RETURN

Page 43: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 43

Subrutinanrop, rekursion

CALL RUTRET1: ADD …

CALL RUTRET2: SUB ...

RUT: ADD …

CALL RUT

RETURN

Page 44: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 44

metoder, funktioner, subrutiner,

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

från anropare till rutinen, inparametrarfrån rutinen till anroparen, returvärdenOlika typ av parameter värdepekare

Page 45: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 45

Nios-II hopp-instruktionCALLR rA

Liknar JMP rA med tillägg attReturadress sparas i register r31Returadressen är adressen till

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

Page 46: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 46

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

# Subrutinanrop med absolutadressering

.macro CALLA addrMOVIA r1, \addrCALLR r1

.endm

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

Page 47: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 47

Nios-II hopp-instruktionCALL Label

Liknar CALLA med begränsning attLabel måste ligga inom det 256MB

områdesom anges av de 4 mest signifikanta

bitarnai PC

Page 48: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 48

Stackhantering

Stack är speciell reserverad plats i minnet

stack-pekare pekar på plats i stacken

PUSH-operation, lägg på stackPOP-operation, hämta från stack

Page 49: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 49

STACKoperationer PUSH och POP

Stack Pointer

SP

PUSH op:SP sp - nmem(sp) op

POP dst:dst mem(sp)SP sp + n

n = antal bytes

+

-

Page 50: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 50

Nios-II: PUSH reg

# Pusha ett register på stacken.macro PUSH regSUBI sp, sp, 4 #sp = r27STW \reg, 0(sp)

.endm# PUSH sp är inte bra

Page 51: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 51

Nios-II: POP reg

# Poppa ett register från stacken.macro POP regLDW \reg,0(SP) ADDI sp, sp, 4 #sp = r27

.endm# POP sp är förödande

Page 52: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 52

Nios-II: StackReservera plats, initiera SP

Stack Pointer

SP

.equ size , 256

.data

.align 2stack: .fill size, 4, 0....text…movia sp, stack+size*4

+

-stack:

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

Page 53: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 53

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-instruktionInga subrutinanrop och returhopp

med returadress på stack

Page 54: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 54

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)

Page 55: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 55

Allmänt: Var placerasReturadress vid subrutinanrop

I ett speciellt register (fördel/nackdel)

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

Page 56: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 56

Parameterplatstill och från subrutin

I register (fördel/nackdel)

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

Page 57: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 57

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 varvid

returadress 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

Page 58: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 58

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

Page 59: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 59

Activation Recordvid Funktionsanrop

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

InparametrarÅterhoppsadressLokala variabler...

Page 60: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 60

old top

push param-n...push param-2push param-1

+

-

param-1param-2…param-n

Stack Pointer

SP

Activation Recordlagring av inparametrar

Page 61: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 61

old top

push param-n...push param-2push param-1call method

+

-

param-1param-2…param-n

Stack Pointer

SP

Activation Recordfunktionsanrop, returadress

Page 62: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 62

old top

method:push ra

+

-

param-1param-2…param-n

Stack Pointer

SP

Activation RecordSpara return address

retaddr

Page 63: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 63

old top

method:push ramove fp, sp

+

-

param-1param-2…param-n

Stack Pointer

SP

Activation RecordSkapa en Frame Pointer

retaddr

Frame Pointer

FP

Frame pointer är r28 i Nios-II

Page 64: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 64

Frame Pointer

FP

+

-

locvar-2locvar-1retaddrparam-1param-2…param-n

Stack Pointer

SP

Activation RecordReservera plats för Local variables

old top

method:push ramove fp, spsubi sp, sp, n*4

Page 65: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 65

Operandutpekning i metodenAdress relativt frame pointer

Frame Pointer

FP

param-1 = 1n(fp)param-2 = 2n(fp)param-k = kn(fp)...locvar-1 = -1n(fp)locvar-2 = -2n(fp)

+

-

locvar-2locvar-1retaddrparam-1param-2…param-n

Stack Pointer

SP

Page 66: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 66

Frame Pointer

FP

+

-

locvar-2locvar-1retaddrparam-1param-2…param-n

Stack Pointer

SP

Activation Recordreturn operation

old top

method:push ramove fp, spsubi sp, sp, n*4”work”mov sp, fppop raret

X

X

Page 67: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 67

old top

push param-n...push param-2push param-1call method

+

-

param-1param-2…param-n

Stack Pointer

SP

Activation Recordafter return to caller

Page 68: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 68

old top

push param-n...push param-2push param-1call methodaddi sp, sp, 4*n

+

-

param-1param-2…param-n

Stack Pointer

SP

Activation Recordafter return to caller

Page 69: IS1200 Datorteknik

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 69

Föreläsning 3Innehåll

4- och 5-stegs PIPE-LINE, repetitionNios-II, Instruktioner och -formatMACRO, pseudo-instruction,exempelLoad och Store med indexerad adressStack med SP samt PUSH och POPSubrutiner, anrop, retur, parametrarActivation Record, aktiveringsblock

Page 70: IS1200 Datorteknik

Spara returadress-registervid nestade anrop

# use r8 to r15, do no use r16- r23subrutin: push r31

...call annan1 # use r8 to

r15call annan2 # use r8 to

r15...pop r31ret

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 70

Page 71: IS1200 Datorteknik

Spara arbets-registervid nestade anrop, alt 1

# use r8 to r15, do no use r16- r23subrutin: push r31

use r8 to r15...push r8 to r15call annan1 #use r8 to r15call annan2 #use r8 to r15pop r15 to r8...use r8 to r15pop r31ret

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 71

Page 72: IS1200 Datorteknik

Spara registervid nestade anrop, alt 2

# use r8 to r15, do no use r16- r23subrutin: push r31

push r16 to r23use r16 to r23call annan1 #use r8 to r15call annan2 #use r8 to r15use r16 to r23pop r23 to r16pop r31ret

April 20, 2023IS1200 Datorteknik o k,

föreläsning CE - F3 72