CE_O2. Nios II. Subrutiner med mera.

Storlek: px
Starta visningen från sidan:

Download "CE_O2. Nios II. Subrutiner med mera."

Transkript

1 IS1500 Lösningsförslag till övning CE_O CE_O2. Nios II. Subrutiner med mera Binära lagringsformat R-type: (Register-format) ra (5 bit) rb (5 bit) rc (5 bit) operationskod (17 bit) Detta format är lämpligt för de instruktioner som använder innehåll från tre register vid sin exekvering. Typexempel är ADD och liknande. Instruktionen add rc,ra,rb medför att innehållet i angivet register rb adderas till innehållet i angivet register ra. Resultatet skrivs därefter till angivet register rc. Motsvarande gäller för många instruktioner, bland annat sub, and, or, nor, xor, mul och div. Jämförelseinstruktionerna i Nios II kodas med R-formatet, likaså instruktionerna för skift och rotation (se en senare uppgift). I-type: (Immediate-format ra (5 bit) rb (5 bit) IMM16 (16 bit) op kod (6 bit) Detta format används för instruktioner som använder en 16 bitars konstant, IMM16, samt två register. Typexempel är ADDI och liknande. Instruktionen addi rb,ra,imm16 medför att en 16 bitar stor konstant IMM16 först utvidgas till 32 bitar med sign-extension;, och sedan adderas med innehållet i angivet register ra. Resultatet av additionen skrivs därefter till angivet register rb. Motsvarande gäller för ett flertal instruktioner, som subi, andi, andhi, ori, orhi, xori, xorhi och muli. De flesta jämförelseinstruktioner i Nios II finns i en immediate-variant som kodas med I-formatet. Formatet används även av LOAD och STORE-instruktioner med offset lagrad i IMM16-fältet. Även för Load och Store görs sign-extension innan IMM16-värdet används; det medför att offset kan vara både positiva och negativa. J-type: (Jump-format) IMMED26 (26 bit) op kod (6 bit) Detta format används endast av instruktionen CALL. Hoppadressen tas fram som de 4 mest signifikanta bitarna från aktuellt värde i PC, följt av 26 bitar från IMMED26 och slutligen 2 nollor i de minst signifikanta bitarna. Effektiva adressen skrivs till PC och medför subrutinanrop varvid returadressen sparas som vanligt i register r31 = ra. Lösningsförslag till övning CE_O2, sida 1 (av 12)

2 2.2. Subrutinanrop med CALL eller CALLR Instruktionen callr medför att hela innehållet i angivet register kopieras till programräknaren (Program Counter, PC). Instruktionen call (som är en av de få instruktioner som använder J-formatet) har plats för en 26-bitars konstant. Effektiva adressen, det vill säga det värde som skrivs till programräknaren, bildas på följande sätt. Ur aktuellt värde i PC tar hårdvaran de 4 mest signifikanta bitarna, sedan används de 26 bitarna från instruktionen. Till sist kompletterar hårdvaran med 2 nollor i de 2 minst signifikanta positionerna. Konsekvensen blir att man kan anropa godtycklig adress på den "sida" om 256 Mbyte som anges av de 4 mest signifikanta bitarna i PC. Det värde som finns i CALL-instruktionens IMM26-fält multipliceras med 4 (skiftas 2 steg vänster) innan det används. Det värde som står i CALL-instruktionen anger alltså word-offset inom aktuell "sida". Här nedanför visas ett exempel med instruktionen call 0x x11c440 (0x / 4, 26-bit absolute address) 0 (opcode) PC (= 0x ) call instr (= 0x11c440) zeroes......since instruction addresses must end with binary (= 0x ) För både call och callr gäller att returadressen, det vill säga adressen till instruktionen närmast efter call/callr, sparas i register r31. Register r31 kallas även ra (return address register). Lösningsförslag till övning CE_O2, sida 2 (av 12)

3 2.3. Retur från subrutin Man ska alltid använda instruktionen ret som helt enkelt kopierar innehållet i register r31 till PC. Man kan tro att det skulle gå lika bra med instruktionen JMP r31, men det är inte tillåtet. Instruktionen ret har binärkoden Instruktionen jmp r31 är EJ tillåten, men skulle ha binärkod Påminnelse: ra är bara är ett annat namn för register r31. Instruktionerna ret och jmp r31 har alltså olika maskinkod. I Nios II Processor Reference Handbook står dessutom följande: It is illegal to jump to the address contained in register r31. To return from subroutines called by call or callr, use ret instead of jmp Multiplikation med upprepad addition a) Flödesschema för subrutinen muladd: start total = 0 i = 1 i tal1 YES total = total + tal2 NO return value = total i = i + 1 return Lösningsförslag till övning CE_O2, sida 3 (av 12)

4 b) Funktionen muladd kan skrivas så här i C: int muladd( int a, int b ) int i; int total = 0; for( i = 1; i <= a; i = i + 1 ) /* b is added to total, a times */ total = total + b; return( total ); Översättning från for-slinga till while-slinga ger följande: int muladd( int a, int b ) int total = 0; int i = 1; while( i <= a) total = total + b; i = i + 1; return( total ); Översättning från while-slinga till if-goto ger nästa version av funktionen: int muladd( int a, int b ) total = 0; i = 1; L1: if( i > a ) goto L2; total = total + b; i = i + 1; goto L1; L2: return( total ); Nu är det dags att översätta från vår förenklade C-kod till assemblerkod. Vi placerar alla variablerna i register, och väljer dessutom att ha variabeln total i returvärdesregistret r2. För i väljer vi r8. Före anrop till en funktion ska funktionens första parameter placeras i r4, andra parametern i r5 och så vidare. De två tal som ska multipliceras finns alltså i r4 och r5 när funktionen muladd börjar exekvera. muladd: movi r2,0 # total = 0 movi r8,1 # i = 1 L1: bgt r8,r4,l2 # if( i > a ) goto L2 /* a finns i r4 */ add r2,r2,r5 # total = total + b /* b finns i r5 */ addi r8,r8,1 # i = i + 1 br L1 # goto L1 L2: ret # total finns i r2 Lösningsförslag till övning CE_O2, sida 4 (av 12)

5 c) Körtiden för muladd beror på vilka värden som multipliceras, närmare bestämt på det ena värdet som finns i register r4. Detta värde avgör hur många varv som slingan mellan L1 och L2 körs. I värsta fall är värdet i storleksordningen 2 miljarder, och då körs slingan 2 miljarder varv. På den Nios II/s som används på laborationerna tar detta omkring 8 miljarder klockcykler, eller närmare 3 minuter. För att komma fram till detta värde gjordes följande beräkningar. Instruktionerna i slingan är bgt add addi br. Instruktionen bgt hoppar framåt, och hoppet tas normalt inte; detta fall ger en körtid på 1 klockcykel. Instruktionerna add och addi tar 1 klockcykel vardera. Instruktionen br hoppar bakåt; detta fall ger en körtid på 2 klockcykler. Summan är alltså 5 klockcykler per varv. Programkoden före och efter själva slingan bidrar bara i försumbar utsträckning till körtiden, när r4 innehåller stora värden. Låt oss också beräkna körtiden för multiplikation med 10. Vi antar att talet 10 finns i register r4. Slingan körs då 10 varv vilket tar 50 klockcykler. Det tillkommer 3 extra cykler för bgt i sista varvet, då hoppet tas. Vidare tar de båda movi-instruktionerna 1 klockcykel vardera, och ret tar 4 klockcykler. Totalt tar funktionen muladd alltså klockcykler = 59 klockcykler för multiplikation med Skifta och rotera bitarna i ett ord Man skiljer mellan operationer/instruktioner för SHIFT och ROTATE. SHIFT skiftar innehållet i utpekad operand varvid oftast nollor fylls på och utskiftade bitar slängs bort. Exempel: innehåll i R9 = 0x bitar slli r9, r9, 2 # skifta innehåll i r9 vänster 2 steg 0:or in till höger bort Innehåll i R9 efteråt = 0x c = 0x x 4 ROTATE ser till att varje utskiftad bit skiftas in i den utpekade operanden. bitar ut Exempel: innehåll i R9 = 0x roli r9, r9, 2 # rotera innehåll i r9 vänster 2 steg Innehåll i R9 efteråt = 0x d samma bitar in till höger Lösningsförslag till övning CE_O2, sida 5 (av 12)

6 SHIFT och ROTATE kan göras åt höger eller vänster. SHIFT och ROTATE kan göras med olika antal steg. Skift finns ofta i två olika versioner, logiskt och aritmetiskt. ARITMETISKT SKIFT HÖGER motsvarar division med 2. För att det ska fungera ska teckenbiten repeteras så att negativa tal fortsätter att vara negativa, och positiva fortsätta att vara positiva. Här är ett exempel där vi dividerar ett negativt tal med 4. Logiskt högerskift ger fel resultat: Exempel: innehåll i R9 = 0xfffffff4 = srli r9, r9, 2 0:or in till vänster # skifta innehåll i r9 höger 2 steg bitar bort Innehåll i R9 efteråt = 0x3ffffffd = (fel!) Aritmetiskt högerskift ger rätt resultat: Exempel: innehåll i R9 = 0xfffffff4 = srai r9, r9, 2 kopior av teckenbiten in till vänster # aritmetiskt skift av innehåll i r9 höger 2 steg bitar bort Innehåll i R9 efteråt = 0xfffffffd = 3 (rätt!) SKIFT VÄNSTER motsvarar multiplikation med 2. Det ger risk för att talområdet överskrids; för tal med teckenbit sker det när teckenbiten växlar värde. Nios II har ingen hårdvara som upptäcker detta, utan programmeraren får skriva programkod som undersöker värdena före och efter operationen. Nios-II har följande instruktioner: Rotation: rol, ror och roli. Instruktionerna rol och ror är ROtate Left repektive ROtate Right. Instruktionerna använder R-format med tre register. Exempel: rol rc,ra,rb medför att innehållet i ra roteras det antal steg som anges av innehåll i rb (endast 5 bitar används, högst 31 stegs rotation) och resultatet placeras i register rc. Lösningsförslag till övning CE_O2, sida 6 (av 12)

7 Instruktionen roli är en "immediate-variant" av rol där man anger antal steg som en konstant med maxvärde 31. Det finns ingen immediate-variant av ror, men "rotate right IMM5" kan utföras med instruktionen roli (32 minus IMM5). Instruktionerna sll och srl samt slli och srli är logiska skiftinstruktioner. Instruktionerna sra och srai är aritmetiska skiftinstruktioner Intruktionerna utan "i" använder R-format enligt ovan och instruktionerna med "i" utnyttjar IMM5-fält precis som rotate-instruktionerna ovan. De aritmetiska skift-instruktionerna sra och srai duplicerar teckenbiten precis som det önskades enligt ovan. Man kan fråga sig vad man ska ha dessa instruktioner till. Ett svar är att in- och utmatning på låg nivå kan kräva detta slags operationer på bitnivå. Exempelvis kan ett program behöva undersöka varje bit i ett ord, och räkna hur många av bitarna som är ettställda Multiplikation med konstant, med hjälp av skift och addition Idén är att bilda produkten 10A genom att addera 2A + 8A, där 2A och 8A beräknas med skift-instruktioner. a) Vi får följande program om värdet A finns i r4. Koden fungerar för negativa tal i r4 om de lagras med 2-komplementsrepresentation. mul10: slli r4,r4,1 # r4 får värdet 2A slli r8,r4,2 # r8 får värdet 8A add r2,r4,r8 # r4 får värdet 2A+8A dvs 10A ret # och så återhopp från subrutinen b) Denna subrutin ska ta 11 klockcykler på den Nios II/s som används på laborationerna. Instruktionen slli tar 3 klockcykler med den hårdvara som finns på laborationerna, add tar 1 cykel och ret tar 4 cykler. c) Talområdet för heltal utan tecken (unsigned int) i Nios II är Om produkten blir större än så så överskrids talområdet och resultatet blir fel. d) Subrutinen mul10 fungerar bra för negativa tal, så länge talområdet inte överskrids. Talområdet för heltal med tecken (signed int) i Nios II är ( ) ( ). Är produkten större än , eller mer negativt än ( ), så överskrids talområdet och resultatet blir fel. Lösningsförslag till övning CE_O2, sida 7 (av 12)

8 2.7. STACKOPERATIONER a) Visa hur en stack fungerar. En stack är en speciell datastruktur. Det går att reservera plats och lägga in nya data, och det går att ta bort gamla data. Stackstrukturen har en begränsning: data måste tas bort i omvänd ordning mot hur de lades in. Det betyder att det senast inlagda värdet måste tas bort först, sedan kan det näst senast inlagda tas bort, och så vidare. I Nios II växer stacken alltid i riktning mot adress 0. Ett av processorns register används som stackpekare. Stackpekaren innehåller alltid adressen till det senast inlagda värdet. Man brukar säga att stackpekaren pekar på det senast inlagda värdet. När ett 4 byte stort värde ska läggas in på stacken så minskas stackpekaren först med 4, så att stackpekaren pekar på ett lagom stort ledigt utrymme. Sedan skrivs värdet till det lediga utrymmet. Denna operation kallas push, och man talar ibland om att pusha ett värde på stacken. (fortsättning följer) stack pointer 0x3fff0 0x3ffec 0x3fff0 adress 0 adress 0x3fff0 adress 0xffffffff adress 0 adress 0x3fff0 X 1 adress 0xffffffff nyast äldst 2 ännu nyare inte längre nyast äldst Lösningsförslag till övning CE_O2, sida 8 (av 12)

9 Operationen att ta bort ett tidigare pushat värde brukar kallas pop. Man talar om att poppa ett värde från stacken. Ska ett värde tas bort från stacken så görs de omvända operationerna, i omvänd ordning. Först läses det senast inlagda värdet. Det värdet finns ju på den minnesadress som stackpekaren anger (pekar på). Vi förutsätter att värdet är 4 byte stort. 0x3fff0 0x3ffec adress 0 1 adress 0x3ffec 2 X just nu nyast blir snart nyast äldst Sedan ökas stackpekarens värde med 4. adress 0xffffffff I och med att stackpekaren ökats med 4 så ligger det poppade värdet utanför stacken, och kommer att skrivas över vid nästa push-operation. b) Operationen PUSH rx (byt rx mot något av registren r2 r23) subi sp,sp,4 stw rx,0(sp) Operationen POP rx ldw rx,0(sp) addi sp,sp,4 c) Makron: register sp är samma som register r27 (se sid 3-2 i manualen kapitel 3: Programming Model).macro PUSH reg subi sp,sp,4 stw \reg,0(sp).endm.macro POP reg ldw \reg,0(sp) addi sp,sp,4.endm Lösningsförslag till övning CE_O2, sida 9 (av 12)

10 2.8. Subrutinanrop i flera nivåer (nästlade anrop) Vilka speciella åtgärder måste vidtagas om man gör ett subrutinanrop i en subrutin? Kallas även inkapslad subrutin eller nested procedure. SVAR: Man måste se till att returadressen alltid förblir oförstörd. Det innebär att det innehåll som finns i r31 vid anrop av en subrutin måste finnas kvar i r31 eller kunna placeras i r31 innan man gör returhopp med instruktionen RET. Man kan skydda innehållet i r31 på olika sätt. Det enklaste torde vara att se till att man aldrig ändrar innehållet i r31. Men om man ska anropa en subrutin från en subrutin måste man innan man gör subrutinanrop omplacera innehållet i r31. Det kan man göra på olika sätt och det vanligaste är att kopiera r31 till en stackarea med en PUSH-operation i början av subrutinen och att sedan återställa innehållet i r31 med en POP-operation i slutet av subrutinen innan retur med RET. Assemblerprogrammeraren måste också ha fullständig kontroll över vilka register som används i olika programdelar av anroparen/caller respektive den anropade/callee. Varje subrutin har rätt att förutsätta att register r8-r15 får användas helt fritt dvs att den som anropar en subrutin måste uppträda som om innehåll i register r8-r15 kan förstöras av den anropade subrutinen. Den som anropar en subrutin måste alltså vid behov skydda innehåll i r8-r15 (t.ex. på stacken) under den tid subrutinen exekveras. En subrutin som vill använda register r16-r23 måste skydda och återställa dessa register innan returhopp eftersom det ska förutsättas att en callee (anropare) kan ha använt r16-r23. Vilka krav som gäller för parametervärden i r2-r7 bör/måste framgå av specifikationer för anroparen och den anropade Subrutin med parameteröverföring av värden i register Skriv välkommenterad Nios II assemblerkod för en subrutin, sumv, som adderar två 32-bitars heltal vars värden lagrats i register r4 och r5 innan anropet av sumv. Resultatet av beräkningen ska finnas i register r2 efter returhopp från sumv. Nedan visas hur motsvarande c-liknande programkod ser ut Handkompilera denna kod till assemblerkod för Nios-II int sumv(int x, int y) return (x+y); SVAR: SUMV: ADD r2, r4, r5 # addera r2 <-- r4 + r5 RET # PC <-- r31 (JMP r31 är förbjuden) Lösningsförslag till övning CE_O2, sida 10 (av 12)

11 2.10. Huvudprogram med parameteröverföring av värden i register Skriv välkommenterad Nios II assemblerkod för ett huvudprogram som använder subrutinen sumv, se föregående uppgift, för att addera två heltal. Nedan visas ett exempel på hur ett sådant c-program kan se ut Handkompilera denna kod till assemblerkod för Nios-II int a, b, res; extern int sumv(int par1, int par2) int main() a = 3; b = 4;... /* annat programarbete */ res = sumv (a, b);... return (0); SVAR:.data # placera i data-area.align 2 # på adress delbar med 4 A:.word 0 # reservera plats för A B:.word 0 # reservera plats för B RES:.word 0 # reservera plats för RES.text # placera i program-area.align 2.global main main: MOVIA r16, A # adressen till A finns nu i r16 MOVIA r17, 3 # MOVI r17, 3 fungerar också STW r17, 0(r16)# nu finns värde 3 i A MOVIA r18, B # r16 är ledig och skulle fungera MOVIA r19, 4 # r17 är ledig och skulle fungera STW r19, 0(r18)# nu finns värde 4 i B... MOVIA r20, A # adressen till A finns nu i r20 LDW r4, 0(r20) # nu finns parameter 1 i r4, värdet från A MOVIA r21, B # adressen till B finns nu i r21 LDW r5, 0(r21) # nu finns parameter 2 i r5, värdet från B CALL SUMV # returvärde levereras i r2 MOVIA r22, RES # adressen til RES finns nu i r22 STW r2, 0(r22) # skriv resultatet till minnets plats RES Lösningsförslag till övning CE_O2, sida 11 (av 12)

12 2.11. Subrutin med parameteröverföring av adresser i register int suma(int * x, int * y) return (*x + *y); Handkompilering till assemblerkod för Nios-II: SUMA: LDW r2, 0(r4) # hämta värde till r2 LDW r8, 0(r5) # hämta värde 2 till r8 ADD r2, r2, r8 # addera RET # retur med summan i r Huvudprogram med parameteröverföring av värden i register int a, b, res; extern int sumv(int* par1, int * par2) int main() a = 3; b = 4;... /* annat programarbete */ res = sumv (&a, &b);... return (0); Handkompilering till assemblerkod för Nios-II:.data # placera i data-area.align 2 # på adress delbar med 4 A:.word 0 # reservera plats för A B:.word 0 # reservera plats för B RES:.word 0 # reservera plats för RES.text # placera i program-area.align 2.global main main: MOVIA r16, A # adressen till A finns nu i r16 MOVIA r17, 3 # MOVI r17, 3 fungerar också STW r17, 0(r16)# nu finns värde 3 i A MOVIA r18, B # r16 är ledig och skulle fungera MOVIA r19, 4 # r17 är ledig och skulle fungera STW r19, 0(r18)# nu finns värde 4 i B... MOVIA r4, A # nu finns parameter 1 i r4, adressen till A MOVIA r5, B # nu finns parameter 2 i r5, adressen till B MOVIA r16, SUMA # nu finns adressen till SMA i r16 CALLR r16 # returvärde kommer i r2 MOVIA r16, RES # återanvändning av r16 STW r2, 0(r16) # skriv resultatet till RES i minnet Lösningsförslag till övning CE_O2, sida 12 (av 12)

CE_O3. Nios II. Inför lab nios2time

CE_O3. Nios II. Inför lab nios2time IS1200 Exempelsamling till övning CE_O3, 2015 CE_O3. Nios II. Inför lab nios2time 3.1. Logiska operationer (se uppgift 1.2 c) Repetera (eller lär dig) innebörden av de logiska operationerna "bitvis AND",

Läs mer

CE_O1. Nios II. Enkla assembler-instruktioner.

CE_O1. Nios II. Enkla assembler-instruktioner. IS1500 ösningsförslag till övning CE_O1 2014 CE_O1. Nios II. Enkla assembler-instruktioner. 1.1. Datorarkitektur för Nios II a) Tabell 3 1 i Nios II Processor Reference Handbook visar processorns register:

Läs mer

CE_O3. Nios II. Stackhantering och förberedelse för lab nios2time

CE_O3. Nios II. Stackhantering och förberedelse för lab nios2time IS1200 ösningsförslag till övning CE_O3 2015 CE_O3. Nios II. Stackhantering och förberedelse för lab nios2time 3.1. ogiska operationer Nios II kan utföra de logiska operationerna AND, OR, XOR och NOR.

Läs mer

Lösningar till tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik 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

Läs mer

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

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte CT3760 Mikrodatorteknik Föreläsning 4 Tisdag 2005-09-06 Stacken I datasammmanhang är en stack ett minnesområde. Det är processorn som använder stacken. För att skapa en stack anger man en adress i stackpekarregistret.

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #17 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Tallriksmodellen Stackoperationer Element kan endast

Läs mer

IS1200 Datorteknik. Övning CE_O4 Maskinnära programmering med C Förberedelser till hemlaboration 1

IS1200 Datorteknik. Övning CE_O4 Maskinnära programmering med C Förberedelser till hemlaboration 1 IS1200 Datorteknik Övning CE_O4 Maskinnära programmering med C Förberedelser till hemlaboration 1 1 4.1 Little och big endian 2 Nios II? Nios II är Little-endian (men eftersom det är en soft-processor

Läs mer

Institutionen för elektro- och informationsteknologi, LTH

Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 2 Programmering i C och assembler MIPS instruktionsarkitektur Mål Att ge en inblick i programspråket C Att veta varför assemblerprogrammering är viktigt Att börja arbeta med MIPS-assembler

Läs mer

Datorteknik. Föreläsning 2. Programmering i C och assembler MIPS instruktionsarkitektur. 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 Datorteknik Föreläsning 2 Programmering i C och assembler MIPS instruktionsarkitektur Mål Att ge en inblick i programspråket C Att veta varför assemblerprogrammering är viktigt Att börja arbeta med MIPS-assembler

Läs mer

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion.

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion. F5 Föreläsning i Mikrodatorteknink 2006-09-05 Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion. Programräknaren

Läs mer

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

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 Mål Datorteknik Föreläsning 2 Att ge en inblick i programspråket C Att veta varför assemblerprogrammering är viktigt Att börja arbeta med MIPS-assembler Att känna till något om programmeringstekniker Att

Läs mer

Datorsystemteknik DVGA03 Föreläsning 8

Datorsystemteknik DVGA03 Föreläsning 8 Datorsystemteknik DVGA03 Föreläsning 8 Processorns uppbyggnad Pipelining Större delen av materialet framtaget av :Jan Eric Larsson, Mats Brorsson och Mirec Novak IT-inst LTH Innehåll Repetition av instruktionsformat

Läs mer

Datorsystem Laboration 2: Minnesmappade bussar

Datorsystem Laboration 2: Minnesmappade bussar Datorsystem Laboration 2: Minnesmappade bussar Senast uppdaterad: 14 oktober 2012 Version 1.2 Student: Lärare: Underskrift: Underskrift: Datum: Datorsystem Laboration 2 1 Innehåll 1 Inledning 2 1.1 Introduktion..................................

Läs mer

Stack och subrutiner Programmeringskonventionen

Stack och subrutiner Programmeringskonventionen Stack och subrutiner Programmeringskonventionen Du ska förstå hur en instruktion behandlas i processorn Du ska känna till några fler instruktioner Du ska veta hur maskinkoden för ett program byggs upp

Läs mer

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

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647 Lågnivåprogrammering Föreläsning 2 Lågnivåprogrammering Förberedelse inför laboration 2. Maskinspråk, assemblerspråk Talrepresentation En enkel dator, komponenter Instruktionsformat, instruktionscykel

Läs mer

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

c a OP b Digitalteknik och Datorarkitektur 5hp ALU Design Principle 1 - Simplicity favors regularity add $15, $8, $11 A basic -bit Select between various operations: OR, AND, XOR, and addition Full Adder Multiplexer Digitalteknik och Datorarkitektur hp Föreläsning : introduktion till MIPS-assembler - april 8 karlmarklund@ituuse

Läs mer

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

Tentamen i IS1500/IS1200/2G1518 Datorteknik fredagen den 19 augusti 2011 kl Tentamen i IS1500/IS1200/2G1518 Datorteknik fredagen den 19 augusti 2011 kl 14.00 19.00 Examinator: Fredrik Lundevall (IS1500), Johan Wennlund (IS1200, 2G1518). Jourhavande lärare: Johan Wennlund. Tentamensuppgifterna

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2016-05-31 Lokal Kåra, T1, T2, U1, U15 Tid 14-18 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 6 Antal

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #17 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola F-36 FLEX- och FLIS-datorn Ext-8 Tallriksmodellen Stackoperationer

Läs mer

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe Kodningskonventioner Viktor Kämpe Varför kodningskonventioner? Förståelse för Skillnaden mellan lokala/globala variabler. Funktionsargument. Returvärde. Möjliggör Mix av assembler och C. Kodningskonventioner/VK

Läs mer

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

Mål. Datorteknik. Innehåll. Innehåll (forts) Hur ser ett program ut? Hur skapas maskinkoden? Mål Datorteknik Föreläsning 3 Att veta hur maskinkoden för ett program byggs upp Att börja programmera i på riktigt Att kunna skriva och anropa subrutiner i Att förstå hur stacken fungerar Att veta vad

Läs mer

Lösningar till tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik Lösningar till tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Torsdagen den 13 mars 2014, klockan 14:00 19:00 i MA:10. Tillåtna hjälpmedel: på tentan utdelad formelsamling,

Läs mer

Institutionen för elektro- och informationsteknologi, LTH

Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 3 Assembler, stack och subrutiner, programmeringskonventionen Mål Att veta hur maskinkoden för ett program byggs upp Att börja programmera i assembler på riktigt Att kunna skriva

Läs mer

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

Datorteknik. Föreläsning 3. Assembler, stack och subrutiner, programmeringskonventionen. Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 3 Assembler, stack och subrutiner, programmeringskonventionen Mål Att veta hur maskinkoden för ett program byggs upp Att börja programmera i assembler på riktigt Att kunna skriva

Läs mer

Grundläggande datavetenskap, 4p

Grundläggande datavetenskap, 4p Grundläggande datavetenskap, 4p Kapitel 2 Datamanipulation, Processorns arbete Utgående från boken Computer Science av: J. Glenn Brookshear 2004-11-09 IT och Medier 1 Innehåll CPU ALU Kontrollenhet Register

Läs mer

Övning 6. Parallellport, timer

Övning 6. Parallellport, timer Övning 6 Parallellport, timer 6.1 de2_pio_toggles18 Memory-Mapped addresses LEDG8 LEDR17 LEDR16 LEDR15 LEDR14 LEDR13 LEDR12 LEDR11 LEDR10 LEDR9 LEDR8 LEDR7 LEDR6 LEDR5 LEDR4 LEDR3 LEDR2 LEDR1 LEDR0 LEDG7

Läs mer

IS1500 Lösningar övning CE_O7 2014. CE_O7. Programmerad in/utmatning. Serieport. Förberedelser till nios2io.

IS1500 Lösningar övning CE_O7 2014. CE_O7. Programmerad in/utmatning. Serieport. Förberedelser till nios2io. IS1500 ösningar övning CE_O7 2014 CE_O7. Programmerad in/utmatning. Serieport. Förberedelser till nios2io. 6.1. Vad är seriell kommunikation? a) Vad är skillnaden mellan seriell och parallell kommunikation?

Läs mer

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

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre Lågnivåprogrammering Föreläsning 2 Lågnivåprogrammering Förberedelse inför laboration 2. Maskinspråk, assemblerspråk Talrepresentation En enkel dator, komponenter Instruktionsformat, instruktionscykel

Läs mer

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

Datorteknik. Föreläsning 6. Processorns uppbyggnad, pipelining. Institutionen för elektro- och informationsteknologi, LTH. Mål Datorteknik Föreläsning 6 Processorns uppbyggnad, pipelining Mål Att du ska känna till hur processorn byggs upp Att du ska kunna de viktigaste byggstenarna i processorn Att du ska känna till begreppet

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2017-10-26 Lokal TER1, TER3 Tid 8-12 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 6 Antal sidor (inklusive

Läs mer

NUV 647E. Digitalteknik och Datorarkitektur 5hp. 3x12 = 36 2x12 = 24 1x12 = 12 0x12 = 18

NUV 647E. Digitalteknik och Datorarkitektur 5hp. 3x12 = 36 2x12 = 24 1x12 = 12 0x12 = 18 Digital kommer från latinets digitus som betyder "finger" eller "tå" (jfr engelskans digit). Uttrycket kommer från den gamla seden att räkna på fingrarna, och avslöjar att det rör sig om räkning med diskreta

Läs mer

Lösningar till tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik Lösningar till tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Onsdagen den 7 mars 2012, klockan 14:00 19:00 i Vic 2, 3. Tillåtna hjälpmedel: på tentan utdelad formelsamling,

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2015-06-01 Lokal Tid 14-18 Kurskod Provkod Kursnamn Provnamn Institution Antal frågor 6 Antal sidor (inklusive denna sida) 6 Kursansvarig Lärare som besöker skrivsalen

Läs mer

F5: Högnivåprogrammering

F5: Högnivåprogrammering F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data via

Läs mer

Datorsystemteknik DVG A03 Föreläsning 3

Datorsystemteknik DVG A03 Föreläsning 3 Datorsystemteknik DVG A03 Föreläsning 3 Datoraritmetik Större delen av materialet framtaget av :Jan Eric Larsson, Mats Brorsson och Mirec Novak IT-inst LTH Hur stora tal kan vi få med N bitar? Största

Läs mer

F5: Högnivåprogrammering

F5: Högnivåprogrammering 1 F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data

Läs mer

Assemblerprogrammering för ARM del 1

Assemblerprogrammering för ARM del 1 Assemblerprogrammering för ARM del 1 Ur innehållet: Assemblerspråk Ordlängder och heltalstyper i C Variabeldeklarationer Programkonstruktioner Tilldelningar Uttrycksevaluering Ovillkorliga programflöden

Läs mer

Datorarkitekturer med operativsystem ERIK LARSSON

Datorarkitekturer med operativsystem ERIK LARSSON Datorarkitekturer med operativsystem ERIK LARSSON Översikt Processorn Maskininstruktioner Dator Primärminne Data/instruktioner Kontroll Central processing unit (CPU) Fetch instruction Execute instruction

Läs mer

Datorteknik ERIK LARSSON

Datorteknik ERIK LARSSON Datorteknik ERIK LARSSON Program Abstraktionsnivå: Högnivåspråk» t ex C, C++ Assemblyspråk» t ex ADD R1, R2 Maskinspråk» t ex 001101.101 Semantiskt gap Alltmer avancerade programmeringsspråk tas fram för

Läs mer

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen 68000 Arkitektur F2: Motorola 68000 I/O signaler Processor arkitektur Programmeringsmodell Assembler vs. Maskinkod Exekvering av instruktioner i 68000 Instruktionsformat MOVE instruktionen Adresseringsmoder

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #16 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Behovet av ändring av programflödet För att kunna skriva

Läs mer

Kontrollskrivning Mikrodatorteknik CDT209 2007-09-20 S2-704

Kontrollskrivning Mikrodatorteknik CDT209 2007-09-20 S2-704 Kontrollskrivning Mikrodatorteknik CDT209 2007-09-20 S2-704 Svar Svar till uppgifterna lämnas på separat papper. En poäng per uppgift. Max 30 poäng. Bonuspoäng beräknas enligt följande tabell: 6-10 poäng

Läs mer

IE1205 Digital Design: F6 : Digital aritmetik 2

IE1205 Digital Design: F6 : Digital aritmetik 2 IE1205 Digital Design: F6 : Digital aritmetik 2 Talrepresentationer Ett tal kan representeras binärt på många sätt. De vanligaste taltyperna som skall representeras är: Heltal, positiva heltal (eng. integers)

Läs mer

CE_O5. Cacheminne. Hemlaboration 2.

CE_O5. Cacheminne. Hemlaboration 2. IS1500 Exempelsamling till övning CE_O5, 2014 CE_O5. Cacheminne. Hemlaboration 2. 5.1. Medeltidshistoria Diskutera förloppet då CPU:n gör en läsreferens i huvudminnet dvs information kopieras från huvudminne

Läs mer

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2017-08-15 Lokal TER4 Tid 14-18 Kurskod Provkod Kursnamn Provnamn Institution Antal frågor 6 Antal sidor (inklusive denna sida) 6 Kursansvarig Lärare som besöker skrivsalen

Läs mer

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

Datorteknik. Tomas Nordström. Föreläsning 6. För utveckling av verksamhet, produkter och livskvalitet. Datorteknik Tomas Nordström Föreläsning 6 För utveckling av verksamhet, produkter och livskvalitet. Föreläsning 6 Vad händer vid uppstart SoC och Kringkretsar, PIO Programmering i Assembler Lab2 genomgång

Läs mer

F4: Assemblerprogrammering

F4: Assemblerprogrammering F4: Assemblerprogrammering Hoppinstruktioner Branch Jump Med vilkor IF satser Loopar while-loopar do-while- loopar for-loopar Stackhantering Underprogram 1 BRA rel_adr Branch Always Relativadressering

Läs mer

Datorteknik ERIK LARSSON

Datorteknik ERIK LARSSON Datorteknik ERIK LARSSON Program Abstraktionsnivå: Högnivåspråk» t ex C, C++ Assemblyspråk» t ex ADD R1, R2 Maskinspråk» t ex 001101.101 Exekvering av en instruktion (1) Hämta instruktion på 00001000 (där

Läs mer

Lösningsförslag till tentamen i IS1500 Datorteknik

Lösningsförslag till tentamen i IS1500 Datorteknik Lösningsförslag till tentamen i IS1500 Datorteknik 2010-12-13 Obs! Dessa lösningsförlag kan vara felakktiga och/eller ofullständ Uppgift 1. Maskinartmetik a) Flyttalet X lagras som 0 1000 0011 000 1001

Läs mer

Assemblerprogrammering för ARM del 2

Assemblerprogrammering för ARM del 2 Assemblerprogrammering för ARM del 2 Ur innehållet Programflöde Subrutiner, parametrar och returvärden Tillfälliga (lokala) variabler Läsanvisningar: Arbetsbok kap 2 Quick-guide, instruktionslistan Assemblerprogrammering

Läs mer

Assemblerprogrammering, ARM-Cortex M4 del 3

Assemblerprogrammering, ARM-Cortex M4 del 3 Assemblerprogrammering, ARM-Cortex M4 del 3 Ur innehållet: Fler pekartyper Användning av stacken Lagringsklasser, synlighet - lokala variabler Funktioner - returvärden och parametrar Läsanvisningar: Arbetsbok

Läs mer

Lösningar till övning CE_O CE_O6. Parallell in/utmatning (I/O). Förberedelser till laboration nios2io.

Lösningar till övning CE_O CE_O6. Parallell in/utmatning (I/O). Förberedelser till laboration nios2io. ösningar till övning CE_O6 2014 CE_O6. Parallell in/utmatning (I/O). Förberedelser till laboration nios2io. 6.1. äs in data från IN-port ( skjutomkopplare TOGGES18) a) ösningsförslag i Nios-II-assembler..equ

Läs mer

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.

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. Laboration:. Jämförelser mellan assembler och C. 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. Förberedelser:

Läs mer

Assemblerprogrammering för ARM del 1

Assemblerprogrammering för ARM del 1 Assemblerprogrammering för ARM del 1 Ur innehållet: Ordlängder och heltalstyper i C Variabeldeklarationer Programkonstruktioner Tilldelningar Uttrycksevaluering Ovillkorliga programflöden Funktion med

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2015-08-18 Lokal TERE, TER4 Tid 14-18 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 7 Antal sidor (inklusive

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2016-10-18 Lokal TER1 Tid 8-12 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 7 Antal sidor (inklusive

Läs mer

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

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 F3 Föreläsning i Mikrodatorteknink 2006-08-29 Kärnan i microcontrollern består av ett antal register och en ALU. Till detta kommer också ett antal portar. Det finns 64 st portar. Några är anslutna mot

Läs mer

DatorsystemteknikDAVA14 Föreläsning 9

DatorsystemteknikDAVA14 Föreläsning 9 DatorsystemteknikDAVA14 Föreläsning 9 epetition: MP likainstruktioneri Exempel på instruktionstyper Processorns uppbyggnad Pipelining törre delen av materialet framtaget av :Jan Eric Larsson, Mats Brorsson

Läs mer

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U) TSEA28 Datorteknik Y (och U), föreläsning 2, Kent Palmkvist 2018-01-16 3 TSEA28 Datorteknik Y (och U) Föreläsning 2 Kent Palmkvist, ISY Praktiska kommentarer Mail kommer skickas ut när labanmälan är möjlig

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2016-08-16 Lokal TER2, TER4 Tid 14-18 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 6 Antal sidor (inklusive

Läs mer

Program Datorteknik. Kontrollenhet. Exekvering av en instruktion. Abstraktionsnivå: Högnivåspråk. Assemblyspråk. Maskinspråk.

Program Datorteknik. Kontrollenhet. Exekvering av en instruktion. Abstraktionsnivå: Högnivåspråk. Assemblyspråk. Maskinspråk. Program Datorteknik Abstraktionsnivå: Högnivåspråk ERIK LARSSON» t ex C, C++ Assemblyspråk» t ex ADD R, R Maskinspråk» t ex 000.0 Exekvering av en instruktion Kontrollenhet () Hämta instruktion på 0000000

Läs mer

Datorarkitekturer med operativsystem ERIK LARSSON

Datorarkitekturer med operativsystem ERIK LARSSON Datorarkitekturer med operativsystem ERIK LARSSON Semantic gap Alltmer avancerade programmeringsspråk tas fram för att göra programvaruutveckling mer kraftfull Dessa programmeringsspråk (Ada, C++, Java)

Läs mer

4. Maskinnära programmering i C. Förberedelser till hemlaboration 1.

4. Maskinnära programmering i C. Förberedelser till hemlaboration 1. IS1200 ösningar till exempel, övning 4, 2015 4. Maskinnära programmering i C. Förberedelser till hemlaboration 1. 4.1. Big-endian och little-endian När heltal, flyttal och adresser ska lagras i datorns

Läs mer

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U) TSEA28 Datorteknik Y (och U), föreläsning 2, Kent Palmkvist 2019-01-22 3 TSEA28 Datorteknik Y (och U) Föreläsning 2 Kent Palmkvist, ISY Praktiska kommentarer Labanmälan öppnar måndag 28/1 kl 12.30 Anmälningssystemet

Läs mer

LABORATION DATORTEKNIK D. Pipelining. Namn och personnummer. Version: (OS,OVA,AN)

LABORATION DATORTEKNIK D. Pipelining. Namn och personnummer. Version: (OS,OVA,AN) LABORATION DATORTEKNIK D Pipelining Version: 1.4 2016 (OS,OVA,AN) Namn och personnummer Godkänd 1 blank sida 2 Innehåll 1 Inledning 5 1.1 Syfte................................. 5 1.2 Förberedelser............................

Läs mer

Assemblerprogrammering - fördjupning

Assemblerprogrammering - fördjupning Assemblerprogrammering - fördjupning Ur innehållet: Trampoliner tabellerade funktionsadresser Aktiveringspost med ARM Cortex M4 Mer om parameteröverföring Registerspill Kodgenerering - ISA "Kodoptimering"

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #16 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Behovet av ändring av programflödet För att kunna skriva

Läs mer

Digitalteknik och Datorarkitektur 5hp

Digitalteknik och Datorarkitektur 5hp Foto: Rona Proudfoot (some rights reserved) Vi skall nu kolla närmare på hur det går till när en instruktion utförs. Fetch = + Digitalteknik och Datorarkitektur hp path & Control maj 2 karl.marklund@it.uu.se

Läs mer

Styrenheten styrsignalsekvenser programflödeskontroll

Styrenheten styrsignalsekvenser programflödeskontroll Styrenheten styrsignalsekvenser programflödeskontroll Kontroll av programflöde Instruktionerna är ordnade sekventiellt i minnet och utförs normalt i denna ordning. Vissa programkonstruktioner kräver dock

Läs mer

Digital Aritmetik Unsigned Integers Signed Integers"

Digital Aritmetik Unsigned Integers Signed Integers Digital Aritmetik Unsigned Integers Signed Integers" Slides! Per Lindgren! EISLAB! Per.Lindgren@ltu.se! Original Slides! Ingo Sander! KTH/ICT/ES! ingo@kth.se! Talrepresentationer" Ett tal kan representeras

Läs mer

Assemblerprogrammering del 3

Assemblerprogrammering del 3 Assemblerprogrammering del 3 Dagens föreläsning behandlar: Kompendiet kapitel 9 och 10.4 Arbetsboken kapitel 16 Ur innehållet: Modularisering, subrutiner och strukturerad programutveckling (flödesdiagram)

Läs mer

Programexempel för FLEX

Programexempel för FLEX Aktivera Kursens mål: Konstruera en dator mha grindar och programmera denna Aktivera Förra veckans mål: Konstruera styrenheten. genom att. implementera olika maskininstruktioner i styrenheten. Kunna använda

Läs mer

Tentamen i EIT070 Datorteknik

Tentamen i EIT070 Datorteknik Tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Onsdagen den 10 mars 2010, klockan 08:00 13:00 å Victoriastadion 1 och 2. Tillåtna hjälpmedel: på tentan utdelad formelsamling,

Läs mer

Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP.

Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP. Övningsuppgifter Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP. F.2 Ett antal på varandra följande minnesord har

Läs mer

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

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng Lunds Universitet LTH Ingenjörshögskolan, Helsingborg Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng Skrivtid: 08.00-13.00 Tillåtna hjälpmedel: Inga. Maximalt

Läs mer

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 - Inbyggda system - Analog till digital signal - Utvecklingssystem, målsystem - Labutrustningen - Uppbyggnad av mikrokontroller - Masinkod, assemblerkod

Läs mer

Övning2 Datorteknik, HH vt12 - Programmering

Övning2 Datorteknik, HH vt12 - Programmering Övning2 Datorteknik, HH vt12 - Programmering För denna övning behöver man adresskarta och beskrivning av laborationsplattform. Finns bland föreläsningsanteckning samt i bilaga l till Lab l. Använd även

Läs mer

Reducerad INSTRUKTIONSLISTA för FLIS-processorn

Reducerad INSTRUKTIONSLISTA för FLIS-processorn Reducerad INSTRUKTIONSLI för FLIS-processorn 2013-11-08 2(10) Innehåll Sidan 3 Programmerarens bild av FLIS-processorn 4 Förklaring av beteckningar i instruktionslistan 5 Enkel dataflyttning 5 Logik 5

Läs mer

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

rd, rs, rt Digitalteknik och Datorarkitektur 5hp ALU register) 32 bit register b 5 bit 32 Registers 32 bit MIPS is a Register-toregister A basic 2-bit ALU The Von Neuman Model register a 5 bit register b 5 bit 32 Registers 32 bit 32 bit Digitalteknik och Datorarkitektur 5hp MIPS is a Register-toregister architecture ALU OP Föreläsning 5:

Läs mer

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621 Lunds Universitet LTH Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621 Skrivtid: 8.00-13.00 Inga tillåtna hjälpmedel Uppgifterna i tentamen ger maximalt 60 poäng. Uppgifterna är

Läs mer

Föreläsningsanteckningar 4. Pipelining

Föreläsningsanteckningar 4. Pipelining Föreläsningsanteckningar 4. Pipelining Olle Seger 2012, olles@isy.liu.se 21 januari 2013 1 Inledning Denna föreläsning handlar om pipelining, som är den helt dominerande processorarkitekturen i dag. Man

Läs mer

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U) TSEA28 Datorteknik Y (och U) Föreläsning 2 Kent Palmkvist, ISY TSEA28 Datorteknik Y (och U), föreläsning 2, Kent Palmkvist 2017-01-17 2 Dagens föreläsning Kort repetition Större programmeringsexempel Subrutiner

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #18 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Assemblerprogrammering Assemblatorer vs kompilatorer

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #8 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Assemblatorer vs kompilatorer En assemblator är ett program

Läs mer

Laboration 2 i Datorteknik- Assemblerprogrammering II

Laboration 2 i Datorteknik- Assemblerprogrammering II Högskolan i Halmstad 1 (8) - Assemblerprogrammering II Målet med laborationen är att få begrepp om Subrutiner. in/utparametrar. Lokala variabler Maska in bitar till ett register Konstruktion av subrutiner

Läs mer

Klassdeklaration. Metoddeklaration. Parameteröverföring

Klassdeklaration. Metoddeklaration. Parameteröverföring Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar

Läs mer

Läs igenom hela laboration 5 innan du börjar beskriva instruktionsavkodaren i VHDL!

Läs igenom hela laboration 5 innan du börjar beskriva instruktionsavkodaren i VHDL! MCU LABORATION5 Laborationens syfte Läs igenom hela laboration 5 innan du börjar beskriva instruktionsavkodaren i VHDL! I denna laboration ska en enkel MCU (Micro-Controller_Unit) konstrueras. En MCU,

Läs mer

Datormodell. Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden

Datormodell. Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden Datormodell Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden Intel 4004 från 1971 Maximum clock speed is 740 khz Separate program and data

Läs mer

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner Ext-3 (Ver 203-04-2) Exempel på RTN-beskrivning av FLEX-instruktioner. Figur på sidan 2 i detta häfte visar hur datorn FLEX är uppbyggd. På sidan visas dessutom hur ALU:ns funktion väljs med styrsignalerna

Läs mer

CPU. Carry/Borrow IX. Programräknare

CPU. Carry/Borrow IX. Programräknare Laboration:. Jämförelser mellan assembler och C. CPU ACCA ACCD ACCB 8-bitars ackumulatorer eller 16- bitars ackumulator CCR 1 1 1 SXH I NZVC Flaggregister Carry/Borrow IX IY PC Indexregister X Indexregister

Läs mer

Exempeltentamen Datorteknik, EIT070,

Exempeltentamen Datorteknik, EIT070, Lunds Universitet LTH Exempeltentamen Datorteknik, EIT070, Skrivtid: xx.00-xx.00 Tillåtna hjälpmedel: Inga. Maximalt antal poäng: 50 poäng För betyg 3 krävs 20 poäng För betyg 4 krävs 30 poäng För betyg

Läs mer

Fö 5+6 TSEA81. Real-time kernel + Real-time OS

Fö 5+6 TSEA81. Real-time kernel + Real-time OS Fö 5+6 TSEA81 Real-time kernel + Real-time OS Stackens användningsområde * JSR / RTS : returadress * Temporärdata (push / pop) void myfunc(void) { int i; // hamnar nog i register int test[10]; // hamnar

Läs mer

Digitala System: Datorteknik ERIK LARSSON

Digitala System: Datorteknik ERIK LARSSON Digitala System: Datorteknik ERIK LARSSON Dator Primärminne Instruktioner och data Data/instruktioner Kontroll Central processing unit (CPU) Fetch instruction Execute instruction Programexekvering (1)

Läs mer

Tentamen Datorteknik Y, TSEA28 Datum 2012-08-14

Tentamen Datorteknik Y, TSEA28 Datum 2012-08-14 Tentamen Datorteknik Y, TSEA28 Datum 2012-08-14 Lokal TER2 Tid 8-12 Kurskod TSEA28 Provkod TEN1 Kursnamn Datorteknik Y Institution ISY Antal frågor 6 Antal sidor (inklusive denna sida) 7 Kursansvarig Andreas

Läs mer

Övning 7. Timer, serieport

Övning 7. Timer, serieport Övning 7 Timer, serieport 7.6 timer_1 Memory-Mapped addresses 0x920 status 0x924 control 0x928 periodl 0x92C periodh 0x930 snapl 0x934 snaph 15 0 Run TO (Time-Out) ITO cont start stop timer_1 start D Q

Läs mer

"Crash Course in Programming"

Crash Course in Programming "Crash Course in Programming" Denna genomgång har fokus på programmering. Den följer PBasic-syntaxen för Basic Stamp II, men är i övrigt i stort sett frikopplad från BS2. Vissa aspekter som tas upp följer

Läs mer

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner Ext-3 (Ver 204-04-08) Exempel på RTN-beskrivning av FLEX-instruktioner. Figur på sidan 2 i detta häfte visar hur datorn FLEX är uppbyggd. På sidan visas dessutom hur ALU:ns funktion väljs med styrsignalerna

Läs mer

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

Extra lab. Nu på fredag kl 8-12 Frivillig Enbart hjälp med projektuppgiften Ingen examination Extra lab Nu på fredag kl 8-12 Frivillig Enbart hjälp med projektuppgiften Ingen examination Erfarenheter från projektstart Läs på i Downey om klasser och objekt! När kan/ska man använda self? När bollarna

Läs mer