Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdEsther Timmermans Laatst gewijzigd meer dan 10 jaar geleden
1
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 3: Instructietypen (2)
2
1/1/ eindhoven university of technology / faculty of Computer Science 2 Vergelijkingen Waarden moeten vergeleken kunnen worden gelijk, niet gelijk, groter, kleiner, kleiner of gelijk….. Fors verschil: zonder teken / 2’s complement Zonder teken 00 (0) 01 (1) 10 (2) 11 (3) 2’s complement 10 (-2) 11 (-1) 00 (0) 01 (+1) Kleinste Grootste Laagste Hoogste “Above” / “Below”“Less than” / “Greater than”
3
1/1/ eindhoven university of technology / faculty of Computer Science 3 De “CoMPare” (CMP) operatie Aftrekken van te vergelijken waarden zonder het resultaat op te slaan Wel worden Carry, Overflow, Negative, Zero vlaggen gezet als bij normale “SUB”-tract Bij aftrekken A - B: A gelijk aan B:Zero = 1 A lager dan B (zonder teken):Carry = 1 A kleiner dan B (2’s compl.): Negative XOR Overflow = 1 Overflow is hier geen fout !
4
1/1/ eindhoven university of technology / faculty of Computer Science 4 Voorwaardelijke sprongen Instructie test “iets” met booleaans resultaat Resultaat niet waar:ga door met volgende instructie Resultaat waar:laad PC met gegeven waarde Basis voor het nemen van beslissingen in programma ! Dat “iets” kan van alles zijn Meestal (combinaties van) status vlaggen Uitkomst van “ingebouwde” vergelijking Directe test van register / geheugen waarden Directe test van register / geheugen bit
5
1/1/ eindhoven university of technology / faculty of Computer Science 5 Ook onvoorwaardelijke sprongen ! Pascal: IFA = 5 THENA := 0 ELSEA := B; C: if (A == 5) A = 0; elseA = B; If:CMPA,#5 JUMPNotEQ,Else Then:MOVA,#0 JUMPAlways,Next Else:MOVA,B Next:...
6
1/1/ eindhoven university of technology / faculty of Computer Science 6 Repertoire van de practicumprocessor Onvoorwaardelijk: SJMP, AJMP, LJMP Verschillende sprong- “bereiken” Assembler rekent en controleert! Voorwaardelijk: Carry = 1, direct bit = 1, A = 0 En de omgekeerde tests (NOT …) Alle voorwaardelijke sprongen zijn PC-relatief Vergelijken en springen in een CJNE instructie Compare and Jump if Not Equal, past Carry aan ! If:CJNEA,#5,Else
7
1/1/ eindhoven university of technology / faculty of Computer Science 7 Andere methoden conditieafhandeling “Skippen”: sla volgende instructie over Standaardvolgorde instructie ophalen blijft intact “Conditionele executie”: sla deze instructie over CMPA,#5; IF SKIPNotEQ; THEN MOVA,#0 SKIPEQ; ELSE MOVA,B (ALWAYS) CMP A,#5 ; IF (EQ) MOV A,#0 ; THEN (NotEQ) MOV A,B ; ELSE IA-64 van Intel !
8
1/1/ eindhoven university of technology / faculty of Computer Science 8 Programma-lus besturing Lussen om herhalingen te introduceren “Blijf … herhalen tot aan voorwaarde voldaan is” test aan eind en spring conditioneel naar begin terug “Zolang aan voorwaarde voldaan is, herhaal …” test aan begin, spring aan eind terug Deze met normale (on) conditionele sprongen ! “Afgetelde” lus met bekend aantal herhalingen Teller in register / geheugen initialiseren Daarna verhogen / verlagen tot eindwaarde
9
1/1/ eindhoven university of technology / faculty of Computer Science 9 Afgetelde lussen (vervolg) Oppassen met berekende begin / eind waarden Omhoog of omlaag tellen ? Begin = eind: instructies in lus niet uitvoeren ? Vrij standaard: omlaag tellen tot nul Teller in register of geheugen (N bits breed) Beginwaarde nul geeft meestal 2 N herhalingen ! Practicumprocessor: DJNZ instructies Decrement and Jump if Not Zero Teller: 8 bit register of direct adres in geheugen/SFR
10
1/1/ eindhoven university of technology / faculty of Computer Science 10 Procedure / Subroutine / Method Drie namen voor hetzelfde: een stuk programma (= reeks instructies) dat vanaf verschillende plaatsen in het programma kan worden aangeroepen om een bepaalde functie uit te voeren Gebruik geeft vele voordelen Eén keer iets verzinnen en in geheugen zetten Efficient en minder kans op fouten Basis van “gestructureerd programmeren”
11
1/1/ eindhoven university of technology / faculty of Computer Science 11 “A”: Aanroep (call) en terugkeer (return) Call “A” Return “B”: Terugkeer-adressen verschillend voor dezelfde “Return” ! Call “B”
12
1/1/ eindhoven university of technology / faculty of Computer Science 12 Onthouden van terugkeeradres Adres van instructie na de “CALL” opslaan Bij “RETURN” deze waarde in PC zetten ! Waar laat je dit adres ? Eén vast register / geheugenadres: onhandig Kan maar één procedure tegelijk aktief zijn Per procedure één register / geheugenadres: beter Een procedure mag zichzelf niet aanroepen: “recursie” Op de stack: super ! Een CALL push’t het terugkeeradres op de stack Een RETURN pop’t automatisch het goede adres
13
1/1/ eindhoven university of technology / faculty of Computer Science 13 Recursieve procedures met stack Call “A” Return “A”: Adres X Adres Y Adres Z Stack 1: X 1 2 2: X Z 3 3: X 4: (leeg) 4 Moet soms NIET uitgevoerd worden 5: Y 6: Y Z 7: Y Z Z 8: Y Z Z Z...
14
1/1/ eindhoven university of technology / faculty of Computer Science 14 Invoer en uitvoer: de basis Invoer: waarde uit buitenwereld via bus lezen Neemt een “monster” van die waarde alleen waarde tijdens het lezen telt Uitvoer: waarde via bus naar buitenwereld Moet vastgehouden worden in register waarde alleen tijdens schrijven stabiel: te kort ! Erg handig om dit register ook te kunnen lezen kun je laatst geschreven waarde veranderen Monsternemer en register heten “poorten”
15
1/1/ eindhoven university of technology / faculty of Computer Science 15 Geprogrammeerde invoer / uitvoer Besturing poorten direct door programma Veranderen van invoerwaarden moet bijgehouden worden: zeer regelmatig lezen dus (“Busy waiting”) Voor adressering poorten meerdere methoden Poort heeft adres in geheugen: “memory mapped” Iedere poort krijgt eigen IN / OUT instructie Aparte (kleine) adresruimte voor poorten met speciale IN/OUT instructies om te lezen/schrijven Practicumprocessor: directe adressen 128..255
16
1/1/ eindhoven university of technology / faculty of Computer Science 16 Invoer / uitvoer met “interrupts” Interrupt: automatisch onderbreken van lopend programma bij activiteit in buitenwereld Buitenwereld hardware geeft één bit aan processor Processor hardware test dit bit na uitvoeren iedere instructie, vóór het ophalen van de volgende Bij indicatie van activiteit automatische aanroep van een procedure op een vast adres: “interrupt routine” Bij RETURN van interrupt routine doorgaan met volgende instructie (alsof er niets gebeurd is) Tijdens interrupt routine geprogrammeerde I/O
17
1/1/ eindhoven university of technology / faculty of Computer Science 17 I /O met “Direct Memory Access” (DMA) Interrupts gebruiken processor-tijd: traag ! Geef device controller zelf toegang tot geheugen Alleen voor eigenlijke lees / schrijf acties processor van bus “afduwen” is veel sneller: “cycle stealing” Controller geeft pas interrupt als ‘ie klaar is met zijn werk of hulp van de processor nodig heeft Aparte DMA controller “helpt” device controller Tellers en adres-registers voor blokken gegevens Soms speciaal type processor met eigen programma
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.