is1200 datorteknik
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 PresentationTRANSCRIPT
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
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
”Ö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
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
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
April 20, 2023IS1200 Datorteknik o k,
föreläsning CE - F3 6
4 Viktiga delar i en dator
CPU
MEM
BUS
I/Oprogram
data
April 20, 2023IS1200 Datorteknik o k,
föreläsning CE - F3 7
Programexekveringi två steg
(decode)EXECUTE
FETCH(update PC)
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
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
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
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
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”...
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.
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”
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
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 !!!)
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 !!!)
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 !!!)
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 ?)
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
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, ...
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, ...
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)
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
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
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
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
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!
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
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)
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
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
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
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
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
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)
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
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
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
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 !
April 20, 2023IS1200 Datorteknik o k,
föreläsning CE - F3 41
Subrutinanrop
CALL RUTRET1: ADD …
CALL RUTRET2: SUB ...
RUT: ADD …
RETURN
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
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
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
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 !
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”
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
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
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
+
-
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
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
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 !
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
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)
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)
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)
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
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
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...
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
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
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
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
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
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
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
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
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
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
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
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
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