1 / 16

5 JJ2 0: Computerarchitectuur 2M200: Inleiding Computersystemen

5 JJ2 0: Computerarchitectuur 2M200: Inleiding Computersystemen. Sessie 3(1): Instructietypen (1). Instructietypen: “standaard” indeling. Wij hanteren vandaag die van het boek Verplaatsen van gegevens “Dyadische” operaties (twee source operanden) “Monadische” operaties (een source operand)

buck
Télécharger la présentation

5 JJ2 0: Computerarchitectuur 2M200: Inleiding Computersystemen

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 5JJ20: Computerarchitectuur2M200: Inleiding Computersystemen Sessie 3(1): Instructietypen (1)

  2. Instructietypen: “standaard” indeling • Wij hanteren vandaag die van het boek • Verplaatsen van gegevens • “Dyadische” operaties (twee source operanden) • “Monadische” operaties (een source operand) • Vergelijkingen en voorwaardelijke sprongen • Aanroep van procedures (subroutines/methods) • Lusbesturing (herhalingen in een programma) • Invoer en uitvoer • Vele andere indelingen mogelijk !

  3. Focus op practicumprocessor • Precies kennen van een bepaalde instructie-setis geen doel van dit vak ! • Wel in assembleertaal kunnen programmeren… • Practicumprocessor heeft van alle typen instructies goede voorbeelden • Heeft ook onverwachtte (maar bruikbare) instructies • Kennis bruikbaar tijdens practicumen ook bij latere projecten met practicumprocessor

  4. Verplaatsen (“move”) van gegevens • Verkeerde term: je maakt een kopiewant de oorspronkelijke waarde verdwijnt niet • Op gegevens worden geen bewerkingen gedaan • Kopie dezelfde waarde als origineel • Meeste processoren veranderen geen statusvlaggen • Practicumprocessor: P-vlag gekoppeld aan A register • Hoeveelheid verplaatste gegevens varieert • Soms maar één keuze (byte, woord), meestal meer • Soms variabel (extreem: 1 bit..volledig geheugen)

  5. Verplaatsen: classificaties en namen • Classificatie van/naar geheugen/register • Van register naar register: “MOVE” • Van geheugen naar register: “LOAD” • Van register naar geheugen: “STORE” • Van geheugen naar geheugen ook mogelijk ! • In “load/store” machines zijn deze operaties bijzonder en hebben ze een aparte naam • Meeste machines gooien alles op een hoop...

  6. < 128: intern geheugen> 127: SFR (incl. ACC) Intern @R0/R1 Programma @A+DPTR Stack Programma @A+PC PUSHPOP Direct Extern @DPTR Register R0..R7 Immediate Extern @R0/R1 In interngeheugen ! Waarde 0: “CLR A” Niet gebruiken ! Practicumprocessor byte MOVe’s MOVC A MOVX

  7. < 128: intern geheugen bytes 32..47> 127: SFR’s met adres deelbaar door 8 (incl. ACC, B en PSW) Immediate16 bits Immediate:“CLR”  0“SETB”  1 Practicumprocessor andere MOVe’s Directbit C(arry) DPTR CLR C ; Carry <- 0bSETB ACC.6 ; bit 6 van A ; <- 1b

  8. Iets speciaals: de “exchange” • Twee MOVe’s in een: verwisseling van plaats ! • Normaal 3 stappen en extra geheugen nodig • 1: hulp  “A” • 2: “A” “B” • 3: “B” hulp (nu “A” verwisseld met “B”) • De practicumprocessor kan dit… • Met complete bytes: “XCH” • Met 4 bits tegelijk: “XCHD” en “SWAP”

  9. Dyadische rekenkundige operaties • Dyadisch = met TWEE source operanden • Optellen en aftrekken: “ADD” en “SUB” • Met “onthouden” / “lenen”: “ADDC” en “SUBB” • Zonder teken en two’s complement: geen verschil !…verschil zit ‘m in testen van Carry / oVerflow • Practicumprocessor kent geen “SUB”  • Eerst Carry op 0 (“CLR C”), dan “SUBB” gebruiken • Kan A  A + (immediate / R0..R7 / direct / @R0/1)

  10. Vermenigvuldigen en delen (MUL /DIV) • Niet altijd beschikbaar ! • Groot verschil zonder teken en 2’s complement • Problemen met resultaten bij gehele getallen • MUL: resultaat breder (in bits) dan sourcesresultaat breedte = som van source breedten • DIV: er zijn TWEE resultaten - deling en rest • Nog meer problemen bij delen • Sources niet even breed voor grootste bereik ? • Wat te doen bij deling door nul of overflow ?

  11. Bij practicumprocessor • Geen “zero” en “negatief” (teken) vlaggen ! • “A = 0” direct testbaar, “ACC.7” test teken-bit van A • DIV en MUL met 8 bits positieve getallen • MUL vermenigvuldigt A met B • Resultaat bits 0..7 komen in A, bits 8..15 komen in B • Overflow wordt “resultaat B  0”, Carry altijd 0 • DIV deelt A door B • Deelresultaat komt in A, rest van deling komt in B • Overflow  “oorspronkelijke B = 0”, Carry  0

  12. Dyadische logische operaties • 16 verschillende twee-operand Boole operaties !bevatten ook NOT: geen twee-operand operatie • Vrijwel altijd twee aanwezig: AND, OR • Meestal ook XOR (eXclusive OR) • Soms NAND, NOR, XNOR, AND-NOT, OR-NOTlaatste twee: “X AND (NOT Y)”, “X OR (NOT Y)” • Meestal op hele woorden / bytes tegelijk • Gelijke operaties op parallel genummerde bits

  13. 010010101 C 000001111 D (“masker”) 011010000 A AND B 000000101 C AND D Deze bitskomen uit A Deze bitskomen uit C 011010000 000000101 011010101 (A AND B) OR (C AND D) Uit A Uit C Maskeren en combineren (verpakken) AND OR 011011011 A 111110000 B (“masker”)

  14. Practicumprocessor: ANL, ORL en XRL • “ANd Logical”, “ORLogical” en “XoRLogical” • Naar A, met immediate, direct, R0..R7, @R0/R1 • Ook naar direct, met A of immediate ! • Met één bit tegelijk: bijzonder… • Gebruikt C(arry) als source en resultaat • Andere source is direct geadresseerd bit • AND, OR, AND-NOT en OR-NOT operaties ANL C,bit ORL C,bit ANL C,/bit ORL C,/bit

  15. Monadische (één source) operaties • Rekenkundig: NEG (0-A), INC (A+1), DEC (A-1) • Met bits schuiven is delen / vermenigvuldigen • Altijd met factor 2N (en afrondingsfouten !) • Delen zonder teken: naar rechts schuiven met nullen1101 (13)  0110 (6) • Delen in 2’s complement: met ‘tekenuitbreiding’schuift kopieën van meest linkse bit naar binnen0110 (+6)  0011 (+3)1100 (-4)  1110 (-2) • Aantal bits soms variabel: niet echt monadisch

  16. Nog meer monadische operaties • “Roteren” = schuiven waarbij uitgeschoven bits terugkomen aan de andere kant van het woord • Hierbij gaan geen bits verloren ! • Handig om bits één voor één te testen • Bij roteren en schuiven soms Carry vlag gebruikt en/of veranderd • Logische operatie: NOT • Practicum processor noemt deze “ComPLement”

More Related