Lösningar till tentamen i EIT070 Datorteknik

Relevanta dokument
Lösningar till tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik

Tentamen i EIT070 Datorteknik

Tentamen i EIT070 Datorteknik

Stack och subrutiner Programmeringskonventionen

Datorteknik. Föreläsning 3. Assembler, stack och subrutiner, programmeringskonventionen. Institutionen för elektro- och informationsteknologi, LTH

Institutionen för elektro- och informationsteknologi, LTH

Mål. Datorteknik. Innehåll. Innehåll (forts) Hur ser ett program ut? Hur skapas maskinkoden?

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

Datorsystemteknik Föreläsning 7DAVA14

Tentamen. Datorteknik Y, TSEA28

Datorsystemteknik DVGA03 Föreläsning 5

Polling (cyklisk avfrågning) Avbrott

c a OP b Digitalteknik och Datorarkitektur 5hp ALU Design Principle 1 - Simplicity favors regularity add $15, $8, $11

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 2. Programmering i C och assembler MIPS instruktionsarkitektur. Institutionen för elektro- och informationsteknologi, LTH

Mål. Datorteknik. Innehåll. Vad händer med en add-instruktion? Vad händer med en add-instruktion. Instruktioner som bitmönster i minnet

A-del motsvarande KS1

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 5. Realtidssystem och realtidsprogrammering. Institutionen för elektro- och informationsteknologi, LTH.

CE_O3. Nios II. Inför lab nios2time

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

Tentamen. Datorteknik Y, TSEA28

Mål. Datorteknik. Introduktion. Innehåll. Verklig situation - pappaledighet. Introduktion (forts)

rd, rs, rt Digitalteknik och Datorarkitektur 5hp ALU register) 32 bit register b 5 bit 32 Registers 32 bit MIPS is a Register-toregister

Digitalteknik och Datorarkitektur

Institutionen för elektro- och informationsteknologi, LTH

Tentamen. Datorteknik Y, TSEA28

TENTAMEN. Datorteknik. D1/E1/Mek1/Ö Hjälpmedel: Häfte "ARM-instruktioner", A4-format, 17 sidor. Maxpoäng:

Tentamen. Datorteknik Y, TSEA28

Tentamen PC-teknik 5 p

Datorsystemteknik DVGA03 Föreläsning 8

Datorteknik. Föreläsning 6. Processorns uppbyggnad, pipelining. Institutionen för elektro- och informationsteknologi, LTH. Mål

Tentamen. Datorteknik Y, TSEA28

Datorteknik. Föreläsning 4. Polling och avbrott. Institutionen för elektro- och informationsteknologi, LTH. Mål

Tentamen i Digitala system - EDI610 15hp varav denna tentamen 4,5hp

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

OBS!! Detta är DEL 2 av tentan. För att få ut denna måste du ha lämnat in del 1. Om du inte fått ut del 1 bör du meddela skrivningsvakten. OBS!!

Tentamen. Datorteknik Y, TSEA28

CE_O1. Nios II. Enkla assembler-instruktioner.

CE_O2. Nios II. Subrutiner med mera.

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Digital- och datorteknik

Tentamen. Datorteknik Y, TSEA28

Mål. Datorteknik. Repetition av avbrott. Innehåll. Mätning och styrning. Datorer för mätning och styrning. timer. Datorsystem A/D. Analog insignal D/A

Extra lab. Nu på fredag kl 8-12 Frivillig Enbart hjälp med projektuppgiften Ingen examination

CPU. Carry/Borrow IX. Programräknare

Tentamen. Datorteknik Y, TSEA28

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

Laboration 2 i Datorteknik- Assemblerprogrammering II

TSEA28 Datorteknik Y (och U)

Tentamen (Exempel) Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Tentamen Datorteknik Y, TSEA28 Datum

Tentamen Grundläggande programmering

Datorsystemteknik DVG A03 Föreläsning 3

Lösningsförslag till tentamen i IS1500 Datorteknik

TSEA28 Datorteknik Y (och U)

Tentamen PC-teknik 5 p

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

Digital- och datorteknik

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

Extrauppgifter för CPU12

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

Assemblerprogrammering för ARM del 2

Tentamen PC-teknik 5 p Lösningar och kommentarer

TENTAMEN. Datorteknik. D1/E1/Mek1/Ö Hjälpmedel: Häfte" ARM-instruktioner", A4-format, 17 sidor. Maxpoäng: 60p

Tenta i Digitalteknik

Foto: Rona Proudfoot (some rights reserved) Datorarkitektur 1. Datapath & Control. December

Digitalteknik och Datorarkitektur 5hp

Tentamen den 18 mars svar Datorteknik, EIT070

Tentamen i IS1500/IS1200/2G1518 Datorteknik fredagen den 19 augusti 2011 kl

I denna laboration undersöker vi hur aritmetiska beräkningar utförs. Vi tittar på olika variabeltyper: 8-bitars, 16-bitars, 32-bitars och flyttal.

Exempelsamling Assemblerprogrammering

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

Datorsystemteknik D. Lösningar till tentamen i kursen EDA330 14/1 2000

F8: Undantagshantering

Ansvarig lärare: Olof Andersson, Telefon (besöker skrivsalen)

TSEA28 Datorteknik Y (och U)

Datorarkitekturer med operativsystem ERIK LARSSON

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin.

Övning2 Datorteknik, HH vt12 - Programmering

Programexempel för FLEX

Digital- och datorteknik

Digital- och datorteknik

Tentamen (Exempel) Datorteknik Y, TSEA28

Övning 6. Parallellport, timer

Tentamen den 14 januari 2015 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

F4: Assemblerprogrammering

LEU240 Mikrodatorsystem

Datorteknik. Tomas Nordström. Föreläsning 6. För utveckling av verksamhet, produkter och livskvalitet.

Lösningsförslag till Tenta i Mikrodator

Institutionen för elektro- och informationsteknologi, LTH

Innehåll. Datorteknik. Abstraktionsnivå 1. Spelkonsol - blockschema. Spelkonsol abstraktionsnivå 2. Abstraktionsnivå 2

CE_O5. Cacheminne. Hemlaboration 2.

Tentamen (Exempel) Datorteknik Y, TSEA28

DatorsystemteknikDAVA14 Föreläsning 9

Transkript:

Lösningar till tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Onsdagen den 13 mars 2013, klockan 14:00 19:00 i Vic 2 A-D, 3 A-C. Tillåtna hjälpmedel: på tentan utdelad formelsamling, miniräknare. Skriv lösningar till varje uppgift på separata ark och använd endast ena sidan på varje ark. Ange namn, program och startår på varje ark. Motivera dina svar tydligt, kommentera all kod du skriver, samt redogör för alla antaganden du gör. Skriv tydligt och läsbart. Betygsgränserna är normalt 20 p för betyg 3, 30 p för betyg 4, och 40 p för betyg 5, av totalt 50 möjliga poäng. Uppgift 1 Betrakta följande C-funktion: int total(int account) { return basic(account) + extras(); Funktionen beräknar en totalsumma genom att lägga ihop värdena från två subrutinanrop, som båda returnerar heltal i tvåkomplement. Argumentet account är ett heltal i tvåkomplement som anger ett kontonummer. Skriv din egen version av total i MIPS-assembler. Du ska skriva komplett assemblerkod, inklusive direktiv och kommentarer, och du ska följa samtliga MIPS programmeringskonventioner, (10 p)..globl total.ent total total: subu sp, sp, 16 # reserve stack space sw ra, 0(sp) # Save value of ra on stack sw a0, 4(sp) # Save value of a0 on stack sw s0, 8(sp) # Save value of s0 on stack jal basic # call subroutine basic, account already in a0 or s0, v0, v0 # save returned value in s0 jal extras # call subroutine extras add v0, v0, s0 # add saved value in s0 to returned value in v0 lw s0, 8(sp) # restore old value of s0 lw a0, 4(sp) # restore old value of a0 lw ra, 0(sp) # restore old value of ra addu sp, sp, 16 # return stack space jr ra # the result is returned in v0.end total Sidan 1 av 5.

Uppgift 2 Studera följande satser i språket C: int matrix[50][50], i, j; for (i=0; i<50; i++) { for (j=0; j<50; j++) { matrix[i][j]=0; Skriv motsvarande kod i MIPS-assembler. Data till matrisen matrix ligger på en adress som heter matrix. I språket C lagras matriser radvis, så att index till höger varierar snabbast. Du behöver bara skriva koden för själva for-looparna, (5 p). ori t0, zero, 50 # set t0 to 50, used for testing in branches or t1, zero, zero # i=0 (t1 contains value of i) la t5, matrix # load base address to matric in t5 ro: bge t1, t0, eo # i>=50 and we are finished mult t1, t0 # multiply row by column size of matrix or t3, zero, LO # t3 now contains 50*i or t2, zero, zero # j=0 (t2 contains value of j) ri: bge t2, t0, ei # j>=50, time for next outer loop add t4, t3, t2 # t4 now contain 50*i+j sll t4, t4, 2 # multiply by 4 to get bytes instead of ints addi t4, t4, t5 # add base address for the matrix sw zero, 0(t4) # set word at address matrix+4*(50*i+j) to zero addi t2, t2, 1 # j++ b ri # next iteration in inner loop ei: addi t1, t1, 1 # i++ b ro # next iteration in outer loop eo: # ready Studera följande subrutin. Förklara kortfattat men tydligt vad subrutinen gör, (5 p)..globl reset.ent reset reset: ori t0, a0, 0 ori t1, zero, 256 loop: sw zero, 0(t0) addi t0, t0, 4 subi t1, t1, 1 bne t1, zero, loop jr ra.end reset Subrutinen nollställer 256 ints i minnet, med början på den adress som anges som argument. Sidan 2 av 5.

Uppgift 3 Vilka tre register används för att hantera avbrotten i en MIPS-processor? Förklara vad registren heter, vilken funktion de har, samt vilka data de innehåller, (6 p). Status används för att styra vilka avbrott som är aktiva. Här finns enskilda bitar som styr vilka av sex externa och två interna avbrott som ska vara aktiva, samt en generell bit som styr alla användardefinierade avbrott. Cause används av avbrottsprocessorn för at meddela vilka avbrott som kommit. Här finns bitar för de sex externa och två interna avbrotten, och en etta betyder att avbrottet har kommit. EPC används för att spara adressen till den instruktion där det körande programmet blev avbrutet av att ett avbrott kom. Efter att avbrottet är hanterat, ska man hoppa tillbaks och fortsätta exekveringen på denna adress. Förklara steg för steg vad som händer vid ett trådbyte i en realtidkärna, (4 p). Ett avbrott kommer till processorn, och avbrottsrutinen startas, (1 p). Samtliga register sparas på stacken, (0.5 p). Schedulern anropas och väljer vilken ny tråd som ska köras, (1 p). Den nya trådens registervärden laddas i registren, (0.5 p). Avbrottsrutinen avslutas och exekveringen fortsätter i den nya tråden, (1 p). Sidan 3 av 5.

Uppgift 4 Vad innebär teckenförlängning, (engelska: sign extension)? Förklara kortfattat men tydligt vad det är och hur det går till i tvåkomplement, (2 p). Teckenförlängning innebär att man översätter ett bitmönster som representerar ett tal till ett bitmönster som representerar samma tal, fast med större antal bitar. I tvåkomplement går det till så att man kopierar den mest signifikanta biten åt vänster tills man får lämplig längd. Visa med ett exempel hur man teckenförlänger talen +3 respektive 2 i tvåkomplement, från åtta till sexton bitar, (2 p). 00000011 blir 0000000000000011 11111110 blir 1111111111111110 Register t0 innehåller värdet 1, och följande instruktioner exekveras: add t1, t0, t0 andi t1, t1, 3 Vilket värde finns nu i t1? Förklara varför, (2 p). Den första instruktioner beräknar värdet av 1+1 och lägger detta i t1. Värdet i t1 är nu 2: 00000000000000000000000000000010 Värdet 3 är binärt: 00000000000000000000000000000011 Bitvis and ger: 00000000000000000000000000000010 Värdet i t1 blir alltså 2. Register t0 innehåller ett okänt värde, och följande instruktioner exekveras: xor t1, t0, t0 andi t1, t1, 3 Vilket värde finns nu i t1? Förklara varför, (2 p). Ett xor med samma värde som sig självt ger alltid resultat noll. Värdet i t1 är nu 0: 00000000000000000000000000000000 Värdet 3 är binärt: 00000000000000000000000000000011 Bitvis and ger: 00000000000000000000000000000000 Värdet i t1 blir alltså 0. Varför måste en laddning av ett 32-bitars värde göras med två immediate-instruktioner, (2 p)? Formatet för en immediate-instruktion i maskinspråk innehåller en konstant som kan vara maximalt 16 bitar lång. Man kan alltså inte lagra en konstant om 32 bitar i en instruktion, utan måste dela upp den på två instruktioner. Sidan 4 av 5.

Uppgift 5 Betrakta följande avsnitt ur ett C-program: int vector[10]; int n; for (n=0; n<=10; n++) { vector[n]=0; När programmet exekveras hänger det sig i en oändlig loop. Om man studerar det i en debugger, visar det sig att vektorn nollställs om och om igen. Vad är det för fel i koden, (3 p)? Vektorn innehåller 10 element, men loopen som nollställer den går 11 varv. Stoppvillkoret i for-satsen ska vara n < 10, inte n <= 10. Förklara vad som händer, (7 p). Det är troligen så att C-kompilatorn placerar variabeln n i minnet direkt efter vektorn vector. När for-satsen nollställer det elfte elementet, som ju inte finns, nollställer den i själva verket värdet i variabeln n, och då börjar slingan om från noll. Lycka till! Sidan 5 av 5.