01/27/2015 13:48
Transcription
01/27/2015 13:48
01/27/2015 13:48 Praktiska kommentarer, forts. ● Liten felaktighet i labbanvisningen – Kapitel 10, 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.” TSEA28 Datorteknik Y (och U) Föreläsning 4 ● Påminnelse ang. Individuell förberedelseuppgift – Individuell förberedelseuppgift 1 måste vara klar innan 1:a labben! – Se hemuppgift på hemsida (meny till höger) – Lab3 har ingen individuell förberedelseuppgift – Går att lösa hemifrån om ni loggar in på ixtab.edu.isy.liu.se ● Kent Palmkvist Datorteknik, ISY Krävs för att få tillgång till eventuella extratillfällen 3 Vem är jagkommentarer Praktiska ● Labanmälan finns tillgänglig – ● ● ● ● 2015-01-05 Multiplikation – teckenförlängning – Villkorliga hopp – Rotation, skift Southfork, olympen, egypten, asgård, ixtab, bussen Alla utom bussen är öppna dygnet runt, men kan vara bokade för annan undervisning (kolla schemaservern!) ● Programsnuttar (t ex från individuella förberedelseuppgiften) innehåller inget avslut ● – Andra operationer Fungerar bara i ISY:s labbsalar/maskiner ● – ● Agenda Aritmetik, 2-komplement representation Långt ned på websidan som beskriver laborationerna finns en länk Användandet av tutor för lab – 2 Agenda Introduktion M68008 (labbdatorn tutor) När programmet är slut fortsätter datorn tolka instruktionerna som kommer Se till att lägga till brytpunkt eller anrop till trap 14 TSEA28 Datorteknik Y 2015 4 2015-01-05 TSEA28 Datorteknik Y 2015 01/27/2015 13:48 Tvåkomplementsrepresentation ● 011 3 010 2 001 1 000 0 111 -1 110 -2 101 -3 100 -4 ● Utökning av talområde (teckenförlängning) För ett n-bitar binärt tvåkomplementstal gäller – Lägg till nollor till vänster – MSB-biten har vikt -2(n-1) – I ett 3-bitars tal är MSB vikt -4 (se tabell till vänster) Exempel 5-bitars tal -> 8 bitars tal 01001 => 00001001 – – Positivt tal måste ha en nolla som MSB ● Värde=−a(n−1)∗2 2015-01-05 + ∑ ai 2 ● – Lägg till en LSB 7 Ökning av talområde 0 som MSB indikerar positivt tal Lägg till 1:or Kopiera teckenbit när antal bitar i talet ökas TSEA28 Datorteknik Y 2015 Exempel teckutökning och övsättning ● -53 = ????2C som 8 bitars 2-komplements tal? ● Börja med konvertera 53 (positiva versionen) ● ● TSEA28 Datorteknik Y 2015 – 2015-01-05 Exempel 2015-01-05 Jfr värdet -1: alla bitar =1 oavsett antal i representationen – -3 = -011 invertera => 100 lägg till LSB + 1 summera -3=101 6 – Generellt i=0 Byte av tecken Y = -X Invertera alla bitar Lägga till nollor fungerar inte! (-3 = 101, 0101 = 5 !!) ● i TSEA28 Datorteknik Y 2015 – – ● Teckenbyte av 2-komplement ● Negativa binära tal Generellt: ett n bitars binärt tvåkomplementstal på formen an-1an-2...a1a0 har representerar värdet n−2 ● Positiva binära tal n-1 bitar viktade precis som för positiva binära tal (n−1) 5 ● – 8 – 53 = 32+16+4+1 = 1101012 = 01101012C – Måste ha 0 först för positiva tal i 2-komplements form Gör om till -53 (byt tecken) – Invertera alla bitar 1001010 och lägg till LSB + 1 – -53 = 10010112C Expandera antal bitar i talet till 8 2015-01-05 – Kopiera teckenbit (MSB) så det blir totalt 8 bitar – -53 = 110010112C TSEA28 Datorteknik Y 2015 01/27/2015 13:48 Multiplikation av 2komplement, test 2 Addition av olika långa tal ● Addition av två tal med olika antal bitar ● Exempel: 7+(-3) ● Test 2: exakt samma metod som för positiva binära tal (-5) * 6 = -30 = (-32+2) = -64+32+2 1011 (-5) 1011 *0110 (-6) *0110 --------------------0000 adderar 0000000 1011 <- 2-komplement 111011 1011 <!!! 11011 -0000 0000 ---------------------------1000010 FEL! 1100010 0111 + 101 0111 istället 0111 + 101 + 1101 ---------------1100 = -4! fel svar X0100 = 4 1 – ● ● 9 Se till att antal bitar lika (teckenförläng), försumma eventuell carry utanför talområdet Behöver alltså teckenförlänga indata så det blir lika med antal bitar i slutresultatet ● I princip kan varje addition av två tal kräva en extra bit i resultatet 2015-01-05 11 TSEA28 Datorteknik Y 2015 2015-01-05 Multiplikation av 2-komplement ● 10 ● Vad händer med multiplikation av de mest negativa värdena? – TSEA28 Datorteknik Y 2015 Antag 3 bitars tal. => minsta värde är -4 (100) 100 *100 --------För få bitar +000 (-4)*(-4)=16 +000 teckenförläng -100 ---------10000 -16! dvs 0110 0110 0000 + 1010 ------------------1100010 Subtraktion sist då teckenbit har negativ vikt 2015-01-05 TSEA28 Datorteknik Y 2015 Multiplikation, forts. Test 1: exakt samma metod som för positiva binära tal 6 * (-5) = -30 = (-32+2) = -64+32+2 0110 (6) *1011 (-5) -----------+0110 +0110 +0000 -0110 --------------1100010 ● Alltid teckenförläng när ni adderar 2komplement ● 12 100 *100 ------000000 00000 -1100 ----------010000 NxM bitars multiplikation => N+M bitars svar 2015-01-05 TSEA28 Datorteknik Y 2015 01/27/2015 13:48 Behöver vet mer om resultat från beräkningar Träningsexempel ● Öva lite multiplikation binärt (själva) ● -8 * 1 -8 * 7 ● 7 * -8 Efter aritmetisk operation (Addition, subtraktion) indikerar flaggor egenskaper hos resultat/beräkning Resultat 0? Lagras i Z-flaggan – : : ● Resultat negativ? Lagras i N-flaggan (=MSB) ● Resultat gav carry? Lagras i C-flaggan – ● 2015-01-05 TSEA28 Datorteknik Y 2015 15 2015-01-05 I tidigare exempel jämfördes likhet mellan tal – ● ● 14 ● move #127,D add #3,D Jämför med vad som kan göras i vanliga programmeringsspråk med två tal A och B A=B – A>B 01111111 +00000011 --------------10000010 ● Dessutom kan A och B vara tvåkomplement eller positiva heltal 2015-01-05 – Resultat utanför talområdet för 2-komplement? – Carry/borrow från beräkning? TSEA28 Datorteknik Y 2015 TSEA28 Datorteknik Y 2015 8-bitars addition (antag D-register i dator är 8 bitar) Resultat placerat i Z-registret (1-bit) – Antar indata och utdata i 2-komplements form. Exempel på genererade flaggor Intressanta beräkningsresultat ● Kan även ses som overflow om positiva heltal in (inte 2C) Resultat gav overflow (för 2-komplement)? Lagras i V-flaggan – 13 Samma som i modelldatorn om cmp ersätts med subtraktion Z = 0 (resultat inte noll) N = 0 (MSB i resultat noll) C = 0 (fick ingen minnessiffra vid MSB) V = 1 (130 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 -10+3 Instruktion som sätter C flaggan move #-10,D adc #3,D 1 11110110 +00000011 --------------11111010 16 2015-01-05 Z = 0 (resultat inte noll) N = 1 (MSB i resultat) C = 0 (ingen minnessiffra) V = 0 (-6 går plats inom 8 bitar) TSEA28 Datorteknik Y 2015 01/27/2015 13:48 Varning ang. flaggor ● Villkorliga hopp Hur flaggor sätts och hur de används kan variera mellan processorfamiljer – – ● Subtraktionens interaktion med C-flaggan skiljer sig mellan labbutrustning (Motorola 68000) och boken (ARM) – ● 2015-01-05 TSEA28 Datorteknik Y 2015 19 Två huvudsakliga användningsområden ● Skicka bitvärde mellan beräkningar ● 18 – Exempel: addera två 64bitar tal i en dator som bara kan addera 32 bitars tal – Addera först minst signifikant 32-bitar del (påverkar även C-flagga) – Addera därefter mest signifikant 32-bitars del inkl. Cflaggan 2015-01-05 T ex välj en annan programdel om två värden olika (jämför med vattningsexemplet) – Villkorliga hopp (conditional branching) TSEA28 Datorteknik Y 2015 BLT (branch less than) antar A-B gjorts, testar C=1 och Z=0 – M68008 har 14 möjliga villkorliga hopp (se tutormanual) – Tutormanual har även bra lista på jämförelser och hoppvillkor för positiva heltal respektive 2komplement. Ibland kan flera namn finnas på samma operation TSEA28 Datorteknik Y 2015 Logiska instruktioner ● AND #value,D – Bit för bit and (1 om båda är 1) move #$23.,D and #$42,D 00100011 & 01000010 = 00000010 ● OR – Bit för bit or (1 om någon eller båda är 1) move #$23,D or #$42,D 00100011 | 01000010 = 00100011 Styr exekveringsflödet mha resultat – – 2015-01-05 Användning av flaggor ● Tvåkomplements data ger Villkorliga hopp ofta kombinationer av flaggor Läs alltid manual för aktuell processor innan programmering ● 17 Beroende på indata kan vissa hopp betyda olika saker ● XOR – Bit för bit xor (0 om båda 0 eller båda 1) move #$23,D xor #$42,D 00100011 ^ 01000010 = 01100001 20 2015-01-05 TSEA28 Datorteknik Y 2015 01/27/2015 13:48 Användning av logiska operationer Exempel på skiftinstruktioner 0 1 ● Kontrollera om specifik bit i indata är =1 2 : 7 move switchar,D ; läs av många switchar där ; varje switch går till en bit and #$04,D ; Kontrollera switch kopplad till bit 2 bne switchpressed ; knappen tryckt (=1), gör något switches Minnesinnehåll switches 7 6 5 4 3 2 1 0 ● Sätt speciell bit move led,D or #$01,D move D,led 0 1 ● 2 : 7 ; läs nuvarande tända lysdioder ; tänd lysdiod 0 utan att påverka ; övriga lysdioder ● Argument till shiftinstruktioner anger antal steg ● Antag D = 11001011 ● LSL #1,D => D = 10010110 ● LSR #1,D => D = 01100101 ● ASR #1,D => D = 11100101 ● LSL #2,D => D = 00101100 Toggla (0->1 eller 1->0) speciell bit move led,D xor #$06,D move D,led led ; läs nuvarande tända lysdioder ; ändra lysdiod 1 och 2 ; uppdatera utsignalen Minnesinnehåll led 7 6 5 4 3 2 1 0 21 2015-01-05 TSEA28 Datorteknik Y 2015 23 2015-01-05 Skiftoperationer d7 d6 d5 d4 d3 d2 d1 d0 0 ● 0 d 7 d6 d5 d4 d 3 d2 d1 d0 ● ● d7 Skifta D åt vänster (fyll på med 0 till höger) – Motsvarar multiplikation med 2 ● Rotation (ROL, ROR) ● Multiplikation, division ● Bitmanipulering – Skifta D åt höger (fyll på med 0 till vänster) ● Se kapitel 7 i Manual till Tutor-systemet – Motsvarar division med 2 (för positiva heltal) – Blir inte rätt för tvåkomplement! – ASR, Arithmetic Shift Right d7 d7 d6 d5 d4 d3 d2 d1 22 – LSR, Logical Shift Right 0 d7 d6 d5 d4 d3 d2 d1 d 7 d6 d5 d4 d 3 d2 d1 d0 Andra möjliga instruktioner LSL, Logical shift left d6 d5 d4 d3 d2 d1 d0 0 2015-01-05 – Skifta D åt höger, kopiera MSB (teckenbit!) – Motsvarar division med 2 (för 2-komplement) TSEA28 Datorteknik Y 2015 TSEA28 Datorteknik Y 2015 24 2015-01-05 Testa och sätt/nollställ enskilda bitar – Många fler som jag inte kommer presentera nu – Vissa kommer diskuteras i samband med metoder för snabbare exekvering av program TSEA28 Datorteknik Y 2015 01/27/2015 13:48 M68000 Tutor minneskarta ● 32-bitar dator med 8 generella D register ● 8 register speciellt för adressberäkningar – $00000 - $008FF reserverat för system och monitor Kan hantera 8-bit, 16-bit och 32-bitars data – $00900 - $07FFF användbart ● ● ● ● Flera versioner finns tillgängliga – Kod för en processor kan köras direkt i en annan processor ● Speciella enheter för att sköta virtuellt minne Olika gränssnitt ● ● 8-bitars buss (M68008), 16-bitars buss (M68000) etc. – $08000 - $0BFFF monitorprogram TUTOR – $0C000 - $0FFFF diverse hjälpprogram (nästan tomt) I/O-kretsar Olika extra funktioner ● – EPROM Samma maskinkod ● – RAM-minne – $10040 - $10042 Serieport styr och dataregister – $10080 - $10086 Parallellport styr och dataregister Övriga adresser används inte – 25 2015-01-05 TSEA28 Datorteknik Y 2015 27 2015-01-05 Tutorsystemet Adress $00000 $00001 $00002 ... $FFFFE ● 8 bitar ... Byte nr 0 Byte nr 1 Byte nr 2 ... 20 2 bytes (1 Mbyte) – Byte nr 2 20 2 $FFFFF Byte nr 2 – 2015-01-05 Enkelt styrprogram för att hjälpa till med programutveckling 20 bitars addressbuss – Endast text in och ut 8 MHz klocka (ca 100-200 ggr långsammare än en smartphone) – Kan läsa och modifiera register och minnesceller – Kan hantera brytpunkter och stega genom kod – Kan assemblera enskilda rader kod (inga labels) 8 bitar databuss ● Minne ● RAM (läs och skrivbart) 32 KByte ● EPROM (endast läsbart) 32 KByte ● I/O-enheter ● 26 På tutorkortet finns en så kallad monitor – ● 1 – ● M68008 processor ● 20 TSEA28 Datorteknik Y 2015 Tutorsystemet, programvara Beståndsdelar Totalt Vissa adresser kan skada hårdvara? Kommunikation med monitor sker via ett terminalprogram Anslutning bred kontakt med stift för anslutning till andra enheter ● Programmerbara anslutning (val av in eller ut) ● Serieport TSEA28 Datorteknik Y 2015 28 2015-01-05 – tutor.sh i labbsalen Bussen – ssh tutor om du sitter i ett annat labb eller hemma via ixtab.edu.isy.liu.se TSEA28 Datorteknik Y 2015 01/27/2015 13:48 Att skriva och assmblera kod ● ● Använd korsassemblern på labbdatorn 29 ● Alla instruktioner är mellan 2 och 6 byte långa – assemble.sh – Längd beror på antal parametrar – Gör det möjligt att spara all kod som skrivs – 1 byte = 8 bitar – Korsassemblern ordnar alla hopp och adresser som behövs ● Kom ihåg att sätta stackpekare innan ni kör ert program – ● M68008 instruktioner ● Manuellt i tutor eller först i ert eget program Varje instruktion måste ligga på en jämn adress Skiljer inte på minne för program och minne för data Se till att monitor startas igen efter att programmet är klart – Se GT address respektive TT adress (go respektive trace med temporär brytpunkt) – Subrutiner bör ha en återhoppsadress på stacken (se avsnitt 7 i laborationsanvisningarna) 2015-01-05 TSEA28 Datorteknik Y 2015 31 2015-01-05 TSEA28 Datorteknik Y 2015 Register i M68000 31 16 15 31 16 15 87 0 0 D0 D1 D2 D3 D4 D5 D6 D7 A0 A1 A2 A3 A4 A5 A6 A7 PC SR ● D0 till D7 – ● – ● 16-bitars statusregister med flaggor (+ statusbitar) PC – 30 32-bitars adressregister, A7 används som stackpekare (SP) SR – ● 32-bitars dataregister A0 till A7 2015-01-05 32-bitars programräknare, 20 bitar används till adresser TSEA28 Datorteknik Y 2015 www.liu.se