TSEA28 Datorteknik Y (och U)

Relevanta dokument
TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

Tentamen. Datorteknik Y, TSEA28

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

TSEA28 Datorteknik Y (och U)

Tentamen. Datorteknik Y, TSEA28

TSEA28 Datorteknik Y (och U)

Tentamen. Datorteknik Y, TSEA28

TSEA28 Datorteknik Y (och U)

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Digital- och datorteknik

Tentamen. Datorteknik Y, TSEA28

Digital- och datorteknik

Digital Aritmetik Unsigned Integers Signed Integers"

Digital- och datorteknik

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

TSEA28 Datorteknik Y (och U)

Digital- och datorteknik

Digital- och datorteknik

Styrteknik: MELSEC FX och numeriska värden

Digital- och datorteknik

Datoraritmetik. Binär addition papper och penna metod. Binär subtraktion papper och penna metod. Binär multiplikation papper och penna metod

Datorsystemteknik DVG A03 Föreläsning 3

F2 Binära tal EDA070 Datorer och datoranvändning

Lösningar till tentamen i EIT070 Datorteknik

Tentamen. Datorteknik Y, TSEA28

Adderare. Digitalteknik 7.5 hp distans: 4.6 Adderare 4.45

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

Laboration 2 i Datorteknik- Assemblerprogrammering II

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

Förenklad förklaring i anslutning till kompedieavsnitten 6.3 och 6.4

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

Binär addition papper och penna metod

Tentamen Datorteknik Y, TSEA28 Datum

Lösningar till tentamen i EIT070 Datorteknik

F4: Assemblerprogrammering

Grunderna i stegkodsprogrammering

Lösningsförslag till Tenta i Mikrodator

Adderare. Digitalteknik 7.5 hp distans: 4.6 Adderare 4.45

Tentamen (Exempel) Datorteknik Y, TSEA28

LABORATION. Datorteknik Y

F2 Datarepresentation talbaser, dataformat och teckenkodning EDAA05 Datorer i system! Roger Henriksson!

Lösningsförslag till Tenta i Mikrodator

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

Digitala System: Datorteknik ERIK LARSSON

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

Digital- och datorteknik

Digital- och datorteknik

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

LABORATION. Datorteknik Y Datorkonstruktion D

CE_O3. Nios II. Inför lab nios2time

Introduktion till programmering och Python Grundkurs i programmering med Python

Digital elektronik CL0090

Tentamen (Exempel) Datorteknik Y, TSEA28

Tentamen (Exempel) Datorteknik Y, TSEA28

Grundläggande datavetenskap, 4p

Det finns en hemsida. Adressen är

TSEA28 Datorteknik Y (och U)

LABORATION. Datorkonstruktion D

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

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

TSEA28 Datorteknik Y (och U)

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

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

Tentamen (Exempel) Datorteknik Y, TSEA28

Struktur: Elektroteknik A. Digitalteknik 3p, vt 01. F1: Introduktion. Motivation och målsättning för kurserna i digital elektronik

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

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

IE1205 Digital Design: F6 : Digital aritmetik 2

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

Assemblerprogrammering för ARM del 2

Övning2 Datorteknik, HH vt12 - Programmering

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

F2 Datarepresentation talbaser, dataformat och teckenkodning

TSEA28 Datorteknik Y (och U)

CE_O1. Nios II. Enkla assembler-instruktioner.

DIGITAL ELEKTRONIK. Laboration DE3 VHDL 1. Namn... Personnummer... Epost-adress... Datum för inlämning...

Övningsuppgifter i Mikrodatorteknik 4p/5p

Digital- och datorteknik

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

TSEA28 Datorteknik Y (och U)

IT för personligt arbete F5

TSEA28 Datorteknik Y (och U)

Tenta i Digitalteknik

Tentamen Datorteknik D del 2, TSEA49

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

Institutionen för elektro- och informationsteknologi, LTH

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

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

Programexempel för FLEX

Föreläsning 1: Intro till kursen och programmering

Transkript:

1827 2 4 Dagens föreläsning TSEA28 Datorteknik Y (och U) Föreläsning 4 Kent Palmkvist, ISY Praktiska kommentarer Resultat från operationer Labanmälan finns tillgänglig Långt ned på websidan som beskriver laborationerna finns en länk Deadline för anmälan kl 23. på söndag 31/1 för Lab1 (2h+2h) 3 Villkorliga hopp Rotation, skif Vanliga programkonstruktioner Introduktion M688 (labbdatorn tutor) Praktiska kommentarer, forts. Datoraccess (borträknat Bussen) Användandet av tutor för lab hemifrån Tutor-systemet förväntar sig den assemblerade filen a.out i toppen på hembiblioteket Flaggor Andra operationer Inloggning kan göras på ISYs datorer (5 datorsalar, 4 med linux och 1 med windows 7) Labbuppgifen görs på Linux-maskiner (windowslabbet mindre intressant) Ingen hårdvara i de vanliga labben cd ~ assemble.sh dinfil.s Samma användarnamn och passord som på IDA (och för email) Separat hembibliotek (inte kopplat till IDA) Alternativ kopiera a.out till ~ Labben öppna dygnet runt (mha passerkort) assemble.sh dinfil.s cp a.out ~/ Ej bokad tid är dom tillgängliga

1827 5 Praktiska kommentarer, forts. Efer dagens föreläsning bör ni kunna börja studera 1a hemuppgifen Hemuppgif innan lab 1 består i att förstå ett redan givet program Glöm inte att ni kan simulera program på labbsystemet, även hemifrån (logga in på ixtab.edu.isy.liu.se) Individuell förberedelseuppgif 1 måste vara klar innan 1a labben! Se hemuppgif på hemsida (meny till höger) Lab3 har ingen individuell förberedelseuppgif Ni ska förstå vad som händer med registervärden Bra att vara förberedd innan 1a lektionen Vi räknar inte med att ni kan processorbeskrivningen utantill, men att ni vet var man hittar den informationen i manualen Liten felaktighet i labbanvisningen För ett n-bitar binärt tvåkomplementstal gäller n-1 bitar viktade precis som för positiva binära tal MSB-biten har vikt -2(n-1) I ett 3-bitars tal är MSB vikt -4 (se tabell) Positiva tal måste ha som teckenbit Generellt ett n bitars binärt tvåkomplementstal på formen an-1an-2...a1a har representerar värdet n 2 (n 1) Värde= a(n 1) 2 + ai 2 i= i Kapitel 1, 1 a stycket, sista meningen har fel länkadress Se http//www.isy.liu.se/edu/kurs/tsea28/laboration/tutor-pm.pdf för mer information om vissa specialkommandon för Tutorsystemet. Tvåkomplementsrepresentation 6 Tips Börja läsa igenom labbmaterial redan nu Krävs för att få tillgång till eventuella extratillfällen Praktiska kommentarer, forts. Glöm inte den individuella hemuppgifen 7 Aritmetiska beräkningar 11 3 1 2 1 1 111-1 11-2 11-3 1-4 Addition och subtraktion Ingen skillnad hur det går till, kan använda samma instruktion för både positiva heltal och 2-komplement Resultat tolkas olika beroende på talrepresentation Implementeras i ALU Samma ordlängd på indata och utdata Multiplikation Två olika instruktioner för positiva heltal respektive 2-komplement Dubbel längd på resultatet Generellt m-bitars tal gånger n-bitars tal ger produkt med m+n bitar 8

1827 9 Exempel multiplikation Gör om subtraktion till addition A-B = A + (-B) Byt tecken på talet som subtraheras Addera Detta är ett vanligt sätt att bygga en ALU som kan addera och subtrahera NxM bitars multiplikation => N+M bitars svar Intressanta beräkningsresultat 1 Om man tycker det är svårt att räkna subtraktion av binära tal 1 *1 ------ -11 ----------1 Antag 3 bitars tal. => minsta värde är -4 (1) 1 *1 --------För få bitar + (-4)*(-4)=16 + teckenförläng -1 ---------1-16! Kommentar om subtraktion Vad händer med multiplikation av de mest negativa värdena? I tidigare exempel jämfördes likhet mellan tal Beräknas genom subtraktion (A-B) och kontrollera om resultat = Resultat placerat i Z-registret (1-bit) Jämför med vad som kan göras i vanliga programmeringsspråk med två tal A och B A=B A>B Dessutom kan A och B vara tvåkomplement eller positiva heltal 11 12 Behöver veta mer om resultatet Efer aritmetisk operation (Addition, subtraktion) indikerar flaggor egenskaper hos resultat/beräkning Resultat? Lagras i Z-flaggan Resultat negativ? Lagras i N-flaggan (=MSB) Resultat gav carry? Lagras i C-flaggan Samma som i modelldatorn om cmp ersätts med subtraktion Kan även ses som overflow om positiva heltal in (inte 2C) Resultat gav spill (engelska overflow) för 2-komplement? Lagras i V-flaggan Resultat utanför talområdet för 2-komplement? Antar indata och utdata i 2-komplements form. Carry/borrow från beräkning? Detekteras mha minnessiffra in till och ut från teckenbitens position

1827 13 Exempel på genererade flaggor move #127,D add #3,D 14 Varning ang. flaggor 8-bitars addition (antag D-register i dator är 8 bitar) 1111111 +11 --------------11 Z = (resultat inte noll) N = 1 (MSB i resultat ett) C = (fick ingen minnessiffra vid MSB) V = 1 (13 går inte plats i 8 bitar tvåkomplement) Vissa instruktioner kan även addera C, dvs om C=1 läggs även 1 till, adc -1+3 Hur flaggor sätts och hur de används kan variera mellan processorfamiljer Subtraktionens interaktion med C-flaggan skiljer sig mellan labbutrustning (Motorola 68) och boken (ARM) Läs alltid manual för aktuell processor innan programmering Instruktion som sätter C flaggan move #-1,D adc #3,D 1 111111 +11 --------------111111 Z = (resultat inte noll) N = 1 (MSB i resultat) C = (ingen minnessiffra) V = (-6 går plats inom 8 bitar) Användning av flaggor Två huvudsakliga användningsområden Skicka bitvärde mellan beräkningar Exempel addera två 64-bitars tal i en dator som bara kan addera 32bitars tal Addera först minst signifikant 32-bitars del (påverkar även C-flagga) Addera därefer mest signifikant 32-bitars del inkl. C-flaggan 15 Exempel på flaggor för långa additioner T ex välj en annan programdel om två värden olika (jämför studenträknarexemplet) Villkorliga hopp (conditional branching) Antag två 16-bitars tal ska adderas i en 8-bitars dator $ABCD+$7654 (två hexadecimala tal) Kan bara addera 8 bitar per instruktion Addera först minst signifikant byte $CD+$54 = $21 samt C=1 Addera sedan mest signifikant byte plus C flaggan Svar $ABCD+$7654 = $2221 samt C=1 Styr exekveringsflödet mha resultat $AB + $76 + 1 = $22 samt C=1 Eventuell overflow kontrolleras bara efer andra additionen 16

1827 17 Villkorliga hopp Tvåkomplements data ger annan betydelse 11 > 1 för positiva heltal, 11 < 1 för 2-komplement M688 har 14 möjliga villkorliga hopp (se tutormanual) Tutormanual har även bra lista på jämförelser och hoppvillkor för positiva heltal respektive 2-komplement. Datorn testar bara flaggor, den kommer inte ihåg vilken operation det var som påverkade flaggorna Logiska operationer AND #value,d Bit för bit and (1 om båda är 1) move #$23,D and #$42,D 111 & 11 = 1 OR Bit för bit or (1 om någon eller båda är 1) move #$23,D or #$42,D 111 11 = 1111 bge notlarger sekvens1 bra done notlarger sekvens2 done Ibland kan flera namn finnas på samma operation cmp D,D1 Om A-B beräknats så tas hoppet om A < B (dvs svar korrekt negativt eller spill med positivt svar) XOR Bit för bit xor ( om båda eller båda 1) move #$23,D xor #$42,D 111 ^ 11 = 111 Implementera motsvarande pseudokod if (A > B) then sekvens1 else sekvens2 BLT (branch less than) antar A-B beräknats, testar om tecken (N) skiljer sig från 2komplements spill (V) (uttryckt som N exor V = 1 i manualen) Villkorliga hopp ofa kombinationer av flaggor 18 Villkorliga hopp, exempel Beroende på indata kan vissa hopp betyda olika saker 19 /* Antag variabel A i register D och variabel B i register D1, / /* båda är i 2-komplements form */ ; kan även göra sub D,D1 med då förstörs D1 efersom ; resultatet från subtraktionen sparas i D1 (Beräknar D1-D) ; bge är motsats till blt, alltså hoppa om B-A gav ett positivt svar ; instruktioner i sekvens1 (ingen riktig assemblerinstruktion) ; hoppa till efer if-satsen ; Början på sekvens2 ; (ingen riktig assemblerinstruktion) ; plats för 1a instruktion efer if-sats Användning av logiska operationer Kontrollera om specifik bit i indata är =1 move switchar,d ; läs av många switchar ; där varje switch går till ; en bit and #$4,D ; Kontrollera switch ; kopplad till bit 2 ; Z-flaggan visar resultat ; Z= om bit = 1 bne switchpressed ; knappen tryckt (=1), ;gör något 1 2 7 switches Minnesinnehåll switches 7 6 5 4 3 2 1 2

1827 21 Användning av logiska operationer, forts. 1 2 7 Nollställ speciell bit led move led,d ; läs nuvarande tända lysdioder and #$FD,D ; släck lysdiod 1 utan att move D,led ; påverka övriga lysdioder Minnesinnehåll led 7 6 5 4 3 2 1 Toggla (->1 eller 1->) speciell bit move led,d ; läs nuvarande tända lysdioder xor #$6,D ; ändra lysdiod 1 och 2 move D,led ; uppdatera utsignalen 23 Exempel på skifoperationer LSR #1,D => D = 1111 ASR #1,D => D = 11111 LSL #2,D => D = 111 Skifa D åt vänster (fyll på med till höger) Motsvarar multiplikation med 2 LSR, Logical Shif Right Skifa D åt höger (fyll på med till vänster) Motsvarar division med 2 (för positiva heltal) Blir inte rätt för tvåkomplement! ASR, Arithmetic Shif Right Skifa D åt höger, kopiera MSB (teckenbit!) Motsvarar division med 2 (för 2-komplement) d7 d6 d5 d4 d3 d2 d1 d7 d7 d7 d6 d5 d4 d3 d2 d1 Rotation (ROL, ROR) Multiplikation, division d6 d5 d4 d3 d2 d1 d d7 LSL Bitmanipulering d7 d6 d5 d4 d3 d2 d1 LSR d7 d7 d7 d6 d5 d4 d3 d2 d1 ASR Testa och sätt/nollställ enskilda bitar Kan implementeras med vanlig and/or istället Se kapitel 7 i Manual till Tutorsystemet Många fler som jag inte kommer presentera nu Vissa kommer diskuteras i samband med metoder för snabbare exekvering av program d6 d5 d4 d3 d 2 d1 d d6 d5 d4 d3 d2 d1 d Antag D = 11111 LSL #1,D => D = 1111 LSL, Logical shif lef Andra möjliga instruktioner Argument till shifinstruktioner anger antal steg 22 Skifoperationer Sätt speciell bit move led,d ; läs nuvarande tända lysdioder or #$1,D ; tänd lysdiod utan att move D,led ; påverka övriga lysdioder ROL d d7 d6 d5 d4 d3 d2 d1 ROR 24

1827 25 M68 familjen (laborationsdatorn) 32-bitars dator med 8 generella D register 8 register speciellt för adressberäkningar Kan hantera 8-bit, 16-bit och 32-bitars data Lägg till storleksinfo sist på instruktionen (default 16 bit data).b för byte (8-bit),.W för word (16-bit),.L för long (32-bit) Exempel 32-bit addition add.l D2,D3 Speciella enheter för att sköta virtuellt minne (mer info senare) Olika gränssnitt M68 instruktioner Alla instruktioner är mellan 2 och 6 byte långa 27 1615 32-bitars adressregister, A7 används som stackpekare (SP) Längd beror på antal parametrar Kretskortet längst upp är tutor 1 byte = 8 bitar Resten är strömförsörjning och möjligheter att koppla in andra enheter Via bandkabel och kretskort i mitten av figuren Ansluts via serieport till linuxdator A A1 A2 A3 A4 A5 A6 A7 PC 32-bitars programräknare, 2 bitar används till adresser Fysisk vy Varje instruktion måste ligga på en jämn adress D D1 D2 D3 D4 D5 D6 D7 SR Laborationssystemet Tutor 16-bitars statusregister med flaggor (+ statusbitar) 32-bitars dataregister Skiljer inte på minne för program och minne för data 31 87 PC 8-bitars buss (M688), 16-bitars buss (M68) etc. 1615 SR Kod för en processor kan köras direkt i en annan processor 31 A till A7 Olika extra funktioner D till D7 Samma maskinkod 26 Register i M68 familjen Flera versioner finns tillgängliga Bandkabel uppe till höger Strömanslutning till vänster 28

1827 Beståndsdelar M688 processor 8 bitar databuss 2 bitars addressbuss (bit 31-2 ignoreras) 8 MHz klocka (ca 1-2 ggr långsammare än en smartphone) Adress $ $1 $2... $FFFFE Tutor minneskarta 8 bitar... $FFFFF Byte nr Byte nr 1 Byte nr 2... Totalt 2 2 bytes (1 Mbyte) Byte nr 2 2 Byte nr 2 2 $9 - $7FFF användbart $8 - $BFFF monitorprogram TUTOR $C - $FFFF diverse hjälpprogram (nästan tomt) $14 - $142 Serieport styr och dataregister EPROM (endast läsbart) 32 KByte $18 - $186 Parallellport styr och dataregister I/O-enheter Programmerbara anslutning (val av in eller ut) Övriga adresser används inte Vissa adresser kan skada hårdvara? Serieport På tutorkortet finns en så kallad monitor Enkelt styrprogram för att hjälpa till med programutveckling Endast text in och ut Kan läsa och modifiera register och minnesceller Kan hantera brytpunkter och stega genom kod Kan assemblera enskilda rader kod (inga labels) Antar alla värden är i hexadecimal form Decimaltal indikeras med & framför 216 (= hexdecimalt D8) anges som &216 Väldigt enkel inmatning (ingen historik etc.) 31 $8 E P R O M $C I/O-kretsar Tutor programvara R A M EPROM (bara möjligt att läsa) RAM (läs och skrivbart) 32 KByte 1 $ - $8FF reserverat för system och monitor 2 Minne $ $9 RAM-minne (går att läsa och skriva) 3 $1 $14 $14 Inte i denna design, men möjligt i andra $FFFFF 32 Att komma i kontakt med tutor Kommunikation med monitor sker via ett terminalprogram I labbsalen Bussen Kommunicera med tutor på labbänk Starta terminalprogram med tutor.sh Dator I Bussen labbet tutor.sh Tutor Laborationssystemet Tutor, detaljer Hemma/annat labb Finns ett antal tutorsystem i ett låst rum kopplade till en speciell maskin kallad tutor.edu.isy.liu.se Anslut till tutormaskinen med ssh tutor Hemifrån behöver du först logga in på ixtab.edu.isy.liu.se Se även (står fel adress i lab1 manualen avsnitt 1) http//www.isy.liu.se/edu/kurs/tsea28/laboration/tutorpm.pdf Dator i annat ISY-labb ssh tutor Dator tutor I låst rum... Tutor 29 Tutor

1827 33 Att skriva och assemblera kod Korsassemblern ordnar alla hopp och adresser som behövs Kom ihåg att sätta stackpekare innan ni kör ert program Se till att monitor startas igen efer att programmet är klart Gör det möjligt att spara all kod som skrivs Tutor-kortet nollställs helt när strömmen stängs av Kortsassembler assembler som översätter till maskinkod för en annan processor än den som assemblern körs av (dvs en intelprocessor kör assembler, koden skapas för M68) Se GT address respektive TT adress (go respektive trace med temporär brytpunkt) Alternativt anropa monitorn sist i din rutin via trap 14 Alla program förväntas starta på adress $1 Manuellt i tutor eller först i ert eget program move.b #228,D7 trap #14 Se avsnitt 12 i lab1-manualen för mer detaljerad beskrivning Subrutiner bör ha en återhoppsadress på stacken (se avsnitt 7 i laborationsanvisningarna) Enklast skriv en huvudfunktion som sätter stackpekare och sedan gör ett subrutin anrop till subrutinen du skrivit, och slutligen anropar monitorn via trap #14 35 Live demo av tutor via ssh (följande kommandon användes) ssh ixtab.edu.isy.liu.se module load BUSSENLAB cd TSEA28 gedit test1.s assemble.sh test1.s list.sh test1.s cp a.out ~/ ssh tutor MD 1 MD 1;DI Ctlr-F L MD 1;DI DF MD 1;DI DF.PC.D.PC 1 DF T T Ctrl-E 34 assemble.sh Lite fler tips för att komma igång Använd korsassemblern på labbdatorn www.liu.se