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