De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 3: Instructietypen (2)

Verwante presentaties


Presentatie over: "1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 3: Instructietypen (2)"— Transcript van de presentatie:

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


Download ppt "1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 3: Instructietypen (2)"

Verwante presentaties


Ads door Google