CE_O3. Nios II. Inför lab nios2time

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

CE_O2. Nios II. Subrutiner med mera.

Lösningar till tentamen i EIT070 Datorteknik

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

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

Digital- och datorteknik

Laboration 2 i Datorteknik- Assemblerprogrammering II

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

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

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.

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

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

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

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

Digital- och datorteknik

Digital- och datorteknik

Lösningar till tentamen i EIT070 Datorteknik

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

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

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

CE_O1. Nios II. Enkla assembler-instruktioner.

Datorsystemteknik DVG A03 Föreläsning 3

LABORATION. Datorteknik Y

LEU240 Mikrodatorsystem

Laboration Datorteknik TSIU02 2. I/O-programmering

Maskinorienterad programmering

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

Kontrollskrivning Mikrodatorteknik CDT S2-704

LABORATION. Datorteknik Y

Tentamen. Datorteknik Y, TSEA28

CPU. Carry/Borrow IX. Programräknare

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

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

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Föreläsning 2. Operativsystem och programmering

Extrauppgifter för CPU12

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

Digital- och datorteknik

Arduinokurs. Kurstillfälle 4

Datorsystem Laboration 2: Minnesmappade bussar

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

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

Tenta i Digitalteknik

F5: Högnivåprogrammering

F5: Högnivåprogrammering

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

CE_O9. Exceptions, interrupts, traps. Förberedelser för lab 3, nios2int

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

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

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

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.

A-del motsvarande KS1

Planering Programmering grundkurs HI1024 HT 2014

Styrteknik: MELSEC FX och numeriska värden

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

MIKRODATORTEKNIK 2012 INNEHÅLLSFÖRTECKNING

Laboration nr2 med enchipsdatorn PIC-16F877

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

"Crash Course in Programming"

Assemblerprogrammering del 1

Tentamen. Datorteknik Y, TSEA28

Lösningar till tentamen i EIT070 Datorteknik

Tentamen. Datorteknik Y, TSEA28

Institutionen för datavetenskap 2014/15

Programallokering. Programtyper. Att placera program i flashrespektive. Program i FLASH-minne. Program i RAM-minne

Övning2 Datorteknik, HH vt12 - Programmering

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

Tenta i Digitalteknik

Digital- och datorteknik

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

Tentamen. Datorteknik Y, TSEA28

F2 Binära tal EDA070 Datorer och datoranvändning

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

Tenta i Digitalteknik

Övning 6. Parallellport, timer

Tentamen i EIT070 Datorteknik

Datorteknik Övningsuppgifter

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok.

Grunderna i stegkodsprogrammering

Digitalteknik och Datorarkitektur

Programexempel för FLEX

Digital- och datorteknik

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

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

Lista på registeruppsättningen i PIC16F877A Datablad TTL-kretsar 74-serien

Assemblerprogrammering del 3

Institutionen för elektro- och informationsteknologi, LTH

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

Tentamen Datorteknik Y, TSEA28 Datum

TSEA28 Datorteknik Y (och U)

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

Tenta i Digitalteknik

Lösningsförslag tenta

Programmering i maskinspråk (Maskinassemblering)

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

Tentamen. Datorteknik Y, TSEA28

Transkript:

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", "bitvis OR" och "bitvis XOR". Undersök vad Nios II har för instruktioner för logiska operationer, och hur de används för registeroperander och med Immediate operand. Det finns även en NOR-instruktion. Studera hur man med dessa instruktioner kan nollställa, ettställa eller invertera utvalda enskilda bitar i ett register, till exempel r8. a) Vilka operandutpekningsmetoder kan användas? b) Vilka typer av operander kan instruktionerna operera på? c) Hur kan man nollställa enstaka bitar i ett register? Ge exempel på en instruktion som nollställer bit 4 i register r8. d) Hur kan man ettställa enstaka bitar i ett register? Ge exempel på en instruktion som ettställer bit 2 i register r9. e) Hur kan man invertera enstaka bitar i ett register? Ge exempel på en instruktion som inverterar bit 7 i register r10. f) Hur kan man invertera samtliga bitar i ett register? Ge exempel på en instruktion som inverterar samtliga 32 bitar i register r11. Uppgifter till övning CE_O3, sida 1 (av 5) 2015-01-13

3.2. Ladda en konstant till ett register Med hjälp av den syntetiska instruktionen (pseudoinstruction) MOVIA R dst, Imm kan man ladda ett konstant värde. Imm, till ett register R dst. Föreslå hur man med verkliga Nios-II-instruktioner kan utföra denna operation för olika värden. Skilj på konstanter som kan lagras i 16 bitar och konstanter som kräver 32 bitar för att lagras. a) Konstanten ryms i 16 bitar. Kan man använda 16-bitars negativa värden? b) Konstanten ryms i 32 bitar. Kan man använda 32-bitars negativa värden? Ett 32-bitars ord kan vara "data" eller "adress" beroende på hur det används i ett program. c) Ge exempel på instruktioner för att nollställa register r17. Ange för- och nackdelar med de olika förslagen. Översätt koden till binär och/eller hexadecimal kod. d) Ge exempel på instruktioner för att ladda register r17 med värdet +1, och med värdet -1. Översätt koden till binär och/eller hexadecimal kod. 3.3. Pseudo-instruktioner och makron En pseudo-instruktion är fördefinierad, och expanderas av assemblern (översättarprogrammet) till en eller flera andra instruktioner. Nios II Processor Reference Manual beskriver de tillgängliga pseudoinstruktionerna. Programmeraren kan också definiera egna koder som liknar pseudo-instruktioner, men de kallas för makron. Efter makrodefinitionen.macro CLR ADD.endm reg \reg, r0, r0 kommer assemblern att byta ut raden CLR R17 mot makroexpansionen ADD R17,R0,R0 a) Skriv makrodefinition för INV reg som inverterar samtliga 32 bitar i angivet register. b) Skriv makrodefinition för NEG reg som negerar innehållet i angivet register. Negera betyder "ta fram 2-komplementet". c) Skriv makrodefinition för ADDIA ra, rb, value som ska fungera som ADDI, men för godtycklig 32-bitars konstant (i 2-komplementrepresentation). Uppgifter till övning CE_O3, sida 2 (av 5) 2015-01-13

3.4. Subrutin för multiplikation av två godtyckliga tal, med hjälp av additioner och skift. Skriv en subrutin mul som multiplicerar två positiva 32-bitars heltal. Förutsätt att produkten av de två talen kan lagras i 32 bitar. Du behöver inte skriva kod för att kontrollera om resultatet blir för stort. Som vanligt för Nios-II finns inparametrar i register r4 och r5, och det beräknade resultatet ska vid returen levereras i register r2. Multiplikationen ska utföras som en loop med 32 varv som gör upprepade additioner och skift med mera. Du får använda register r2 till och med r15 som arbetsregister. Alla andra register ska ha oförändrat innehåll vid returen från din subrutin. Den algoritm du ska använda liknar den "algoritm" som man vanligen använder vid decimal multiplikation för hand med penna och papper. a) Rita ett flödesschema för subrutinen mul. b) Skriv assemblerkod för subrutinen mul. c) Ungefär hur lång tid tar multiplikation med denna subrutin? d) Kan det bli overflow? (Överkursfråga.) e) Hur fungerar programmet för negativa tal? (Överkursfråga.) 3.5. Programutveckling Diskutera de olika steg som ingår i arbetet med att skriva och provköra ett program i C-kod och assemblerkod. Vilken typ av kommandon kan vara praktiskt att ha tillgång till och vilka filer vill man ha genererade? Om detta finns en hel del föreläsningsbilder från föreläsning 3 och/eller 4. 3.6. Minnesdisposition Visa hur den tillgängliga adressrymden disponeras. Av dessa adresser är vissa reserverade för speciella ändamål som inte avslöjas ännu. Din programkod, text och data, kommer att placeras på adress 0x800000 och uppåt Om Du vill använda en stack måste stackpekaren (sp=r24) initieras till ett värde som pekar på ledigt minnesutrymme. Vårt programutvecklingssystem för Nios-II fungerar bäst om Du glömmer att själv reservera plats för stack och initera stackpekare. Vi rekommenderar/befaller att Du helt och hållet överlåter reservering av stackarea och initiering av stackpekare till programutvecklingssystemet. Uppgifter till övning CE_O3, sida 3 (av 5) 2015-01-13

3.7. Mall för ett program Diskutera en vanlig utformning av ett program dvs vilka delar som brukar ingå samt lite tips om hur man kan utnyttja include-satser, define-satser och macros för att underlätta hanteringen. 3.8. Vilka program ska skrivas i laboration nios2time I laborationspm för laborationen Nios2Time finns specifikationer för de subrutiner som ska skrivas som förberedelse inför laborationen. På övningen diskuteras subrutinerna HEXASC, PUTTIME, TICK och DELAY med möjlighet att få konkreta tips på bra algoritmer och instruktioner. Studera även i lab-pm hur man kan använda flödesschema för att beskriva algoritmer i sina programkoder. 3.9. Biblioteksrutinen putchar Det finns en användbar uppsättning av subrutiner som tillhandahålls av programutvecklingssystemet. Här nämner vi bara (klippt ur lab-pm för nios2time) The standard C library routine putchar To send output to the Console window, we use the built-in function putchar. The putchar subroutine expects one parameter: r4 contains the byte to be sent. Den kan anropas från program skrivna i C-kod eller assemblerkod med följande parameteröverföring. Anrop ska ske med en parameter i C-kod. I assemblerkod placeras motsvarande parameter i register r4. Parametern innehåller ASCII-koden för det tecken som ska skrivas. Skriv Nios-II-assembler för en del av ett program som skriver ut texten "Hej!" i början på en ny rad. Subrutinen putchar ska användas för att skriva ut varje tecken. 3.10. Hallå där vänta en liten stund Det behövs en subrutin WAIT som medför att instruktionen CALL WAIT tar cirka 1 millisekund att exekvera. Subrutinen WAIT ska exekveras på labutrustningen med en processor Nios II med klockfrekvensen 50 Mhz. Subrutinen WAIT ska återlämna alla register med samma innehåll som vid anropet. Körtiden kan approximeras genom att anta att varje instruktion tar en klockcykel. a) Rita flödesschema för subrutinen. b) Skriv assembler-programkod för subrutinen i Nios-II-assembler. Uppgifter till övning CE_O3, sida 4 (av 5) 2015-01-13

3.11. Hallå där vänta en lite längre stund Det behövs en subrutin WAITX som medför en fördröjning av så många 1-millisekunders intervall som anges av innehållet i r4 vid anrop av WAITX. Det är svårt på gränsen till omöjligt att få en exakt fördröjning, så det räcker att det blir ungefär rätt. Denna rutin är ett exempel på en parameterstyrd fördröjning. a) Rita flödesschema för subrutinen. b) Skriv assembler-programkod för subrutinen i Nios-II-assembler. 3.12. Assemblerdirektiv Diskutera olika assemblerdirektiv som finns (och borde finnas eller tvärtom)! Uppgifter till övning CE_O3, sida 5 (av 5) 2015-01-13