1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 3: Instructietypen (1)
1/1/ eindhoven university of technology / faculty of Computer Science 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 !
1/1/ eindhoven university of technology / faculty of Computer Science 3 Focus op practicumprocessor Precies kennen van een bepaalde instructie-set is geen doel van dit vak ! Wel in assembleertaal kunnen programmeren… Practicumprocessor heeft van alle typen instructies goede voorbeelden Heeft ook onverwachte (maar bruikbare) instructies Kennis bruikbaar tijdens practicum en ook bij latere projecten met practicumprocessor
1/1/ eindhoven university of technology / faculty of Computer Science 4 Verplaatsen (“move”) van gegevens Verkeerde term: je maakt een kopie want 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)
1/1/ eindhoven university of technology / faculty of Computer Science 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...
1/1/ eindhoven university of technology / faculty of Computer Science 6 Practicumprocessor byte MOVe’s A Immediate Stack PUSH POP Direct Register R0..R7 127: SFR (incl. ACC) Waarde 0: “CLR A” Niet gebruiken ! In intern geheugen ! MOVC MOVX
1/1/ eindhoven university of technology / faculty of Computer Science 7 Practicumprocessor andere MOVe’s C(arry) Direct bit Immediate: “CLR” 0 “SETB” 1 127:SFR’s met adres deelbaar door 8 (incl. ACC, B en PSW) DPTR Immediate 16 bits CLR C ; Carry <- 0b SETB ACC.6 ; bit 6 van A ; <- 1b
1/1/ eindhoven university of technology / faculty of Computer Science 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”
1/1/ eindhoven university of technology / faculty of Computer Science 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
1/1/ eindhoven university of technology / faculty of Computer Science 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 sources resultaat 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 ?
1/1/ eindhoven university of technology / faculty of Computer Science 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 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
1/1/ eindhoven university of technology / faculty of Computer Science 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-NOT laatste twee: “X AND (NOT Y)”, “X OR (NOT Y)” Meestal op hele woorden / bytes tegelijk Gelijke operaties op parallel genummerde bits
1/1/ eindhoven university of technology / faculty of Computer Science 13 Maskeren en combineren (verpakken) A B (“masker”) A AND B Deze bits komen uit A C D (“masker”) C AND D Deze bits komen uit C (A AND B) OR (C AND D) Uit AUit C ANDOR
1/1/ eindhoven university of technology / faculty of Computer Science 14 Practicumprocessor: ANL, ORL en XRL “ANd Logical”, “OR Logical” en “XoR Logical” Naar A, met immediate, direct, 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
1/1/ eindhoven university of technology / faculty of Computer Science 15 Monadische (één source) operaties Rekenkundig: NEG (0-A), INC (A+1), DEC (A-1) Met bits schuiven is delen / vermenigvuldigen Altijd met factor 2 N (en afrondingsfouten !) Delen zonder teken: naar rechts schuiven met nullen 1101 (13) 0110 (6) Delen in 2’s complement: met ‘tekenuitbreiding’ schuift kopieën van meest linkse bit naar binnen 0110 (+6) 0011 (+3) 1100 (-4) 1110 (-2) Aantal bits soms variabel: niet echt monadisch
1/1/ eindhoven university of technology / faculty of Computer Science 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”