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 4: Instructieformaten adressering assembleertalen (zelfstudie.

Verwante presentaties


Presentatie over: "1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 4: Instructieformaten adressering assembleertalen (zelfstudie."— Transcript van de presentatie:

1 1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 4: Instructieformaten adressering assembleertalen (zelfstudie !)

2 1/1/ eindhoven university of technology / faculty of Computer Science 2 Instructieformaten: opcode + adres(sen)  Adressen bepalen waar gegevens staan/komen  De operatie-code geeft aan welke instructie het is  Eigenlijke bewerking + aantal en codering adressen  Aantal adressen belangrijk criterium  0: gegevens op vaste plaats(“implied”, “stack”)  1: één vast register nodigACCU  ACCU + “a”  2: veel flexibeler“a”  “a” + “b”  3: superflexibel“a”  “b” + “c”  Meer adressen:complexere instructies en hardware !

3 1/1/ eindhoven university of technology / faculty of Computer Science 3 Instructielengte: afwegingen...  Vaste lengte: makkelijk ophalen en decoderen (?)  Aanpassen aan langste: verspilling geheugenruimte  Korter: woekeren met bits, eenvoudige instructies  Variabele lengte: efficienter  Instructie en adressen nemen plaats in die nodig is  Veel complexer ophalen en decoderen

4 1/1/ eindhoven university of technology / faculty of Computer Science 4 Expanderende opcodes  Vast aantal bits variabel gebruiken, bijvoorbeeld  Opcode = 0..13: alle drie adressen bruikbaar  Opcode = 14: adres 1 wordt ‘opcode’ + 2 adressen (2,3)  Opcode = 15: adres 1+2 worden ‘opcode’ + 1 adres (3)  Vele verdelingen mogelijk, soms zeer complex !  Optimale verdeling: Huffman algoritme (niet bij stof) 0123456789101112131415 OpcodeAdres 1Adres 2Adres 3

5 1/1/ eindhoven university of technology / faculty of Computer Science 5 Instructieformaten practicumprocessor  Variabele lengte: 1, 2 of 3 bytes  Opcode altijd in eerste byte  Kiezen tussen R0..R7 gebruikt 3 bits in eerste byte  Kiezen tussen R0 / R1 gebruikt 1 bit in eerste byte  Bij twee instructies 3 bits in eerste byte voor adres  Ongeveer 112 verschillende instructies  Meeste instructies 0, 1 of 2 adressen  2 instructies klassificeerbaar als 3-adres instructies

6 1/1/ eindhoven university of technology / faculty of Computer Science 6 Adresseringsmodi  (Resultaat) waarden: “Operanden”  Opgesplitst in “sources” en “destinations”: “bronnen” en “bestemmingen”  Direct adres in geheugen specificeren is duur  Veel bits nodig (daarom niet altijd 3 adres machine !)  Bovendien weinig flexibel…  Ingewikkelde adresmodi voor hogere talen  Veel modi mogelijk, maar geeft complexe processor

7 1/1/ eindhoven university of technology / faculty of Computer Science 7 Assembleertalen  Hoofdstuk 7 (t/m 7.1.4) van boek: zelfstudie !  Assembleertaal: Taal om met symbolische namen de instructies en adressen van een processor te beschrijven.  Laagste niveau bruikbare programmeertaal  Per tekstregel één instructie  “Assembler” vertaalt assembleertaal in bitcodes  “Pseudo-instructies” besturen assembler zelf  Practicumprocessor: ASM504 assembler

8 1/1/ eindhoven university of technology / faculty of Computer Science 8 De ASM504 assembler  Zo simpel mogelijk (maar wel snel...)  Geen “macro’s”, geen “linker”  Wijze van opschrijven: Intel Pentium vorm  Siemens SAB-C504 afgeleid van Intel 8051 processor  Destination volgt direct na opcode naam ; commentaar volgt na een puntkomma Lus: ; dit is een ‘label’ ADD A,Temp ; tel waarde in Temp op bij A ORG 00FFh ; ‘ORiGin’ forceert adres van: Temp: DS 1 ; ‘Define Storage’, 1 byte

9 1/1/ eindhoven university of technology / faculty of Computer Science 9 “Immediate” adressering  Nederlandse term “onmiddelijk” (bah !)  GEEN ECHT ADRES: waarde in instructie zelf  Waarde moet dus een constante zijn !  Aantal bits varieert afhankelijk van destination  Aangeven in assembleertaal met getal of berekening die constante waarde geeft  Bij practicumprocessor een # ervoor zetten: ADD A,#41; tel constante 41 bij A register op

10 1/1/ eindhoven university of technology / faculty of Computer Science 10 Directe adressering  Volledig adres van operand staat in instructie  Adres is dus constant !  Waarde van operand is variabel, de plaats is vast  Hogere programmeertalen: “globale variabelen”  Assembleertaal notatievorm varieert nogal…  Bij practicumprocessor: getal of berekening die constant getal geeft zonder een # ervoor: ADD A,41; tel waarde in adres 41 op bij A ; adressen 0..127: intern geheugen ; adressen 128..255: SFR’s

11 1/1/ eindhoven university of technology / faculty of Computer Science 11 Register adressering  Operand in register met symbolische naam  Registers binnen CPU: snel, daarom veel gebruikt  “load/store”: berekeningen alleen tussen registers  Beschikbare registers gegeven in ISA  Beperkingen in gebruik van registers !  Bij practicumprocessor belangrijk: A en R0.. R7 MOV R1,A; “MOVe” copieer waarde in A naar R1 MOV R2,R3 ; dit is NIET toegestaan !

12 1/1/ eindhoven university of technology / faculty of Computer Science 12 Registerindirecte adressering  Operand in geheugen, adres hiervan in register  Lekker flexibel: adres niet vast, kan berekend worden  Weinig bits om adres in geheugen te specificeren !  Soms enige mogelijkheid om geheugen te adresseren  Assembleertaal notatievormen verschillen…  Meestal geheugenadressering met haken: (R1)  Bij practicumprocessor met @ (‘at’): ADD A,@R1; tel waarde in intern geheugen ; (op adres in R1) op bij A register

13 1/1/ eindhoven university of technology / faculty of Computer Science 13 Geïndexeerde adressering  Operand in geheugen op adres aangewezen met de som van de waarde in een register en een constante (“offset”) waarde  Aantal bits in offset varieert met bedoeling  Weinig bits: register is hoofdbepaler van adres “struct” in C, “record” in Pascal  Veel bits: register varieert (“indexeerd”) het adres “array” in zowel C als Pascal

14 1/1/ eindhoven university of technology / faculty of Computer Science 14 Basisgeïndexeerde adressering  Operand in geheugen op adres aangewezen met de som van TWEE registers en (eventueel) een constante offset waarde  Het eerste register bevat (variabel) “basis” adres  Het tweede register varieert (“indexeert”) dit adres  De offset kan het adres nog (een beetje) verschuiven  De practicumprocessor kan dit, zonder offset: MOVC A,@A+DPTR ; “MOVe Code”: laad A register ; met waarde in programmageheugen ; op adres dat som is van A+DPTR

15 1/1/ eindhoven university of technology / faculty of Computer Science 15 Het kan NOG gekker (niet bij stof)  “Auto increment” en “auto decrement”:  Waarde in index register automatisch verhogen of verlagen bij iedere lees/schrijf actie  “post”: NA de actie, “pre”: VOOR de actie  “Scaled index”:  Waarde in index register wordt niet direct gebruikt, maar eerst vermenigvuldigd met een constante  Voor directe ondersteuning van “arrays”

16 1/1/ eindhoven university of technology / faculty of Computer Science 16 Stack (“stapel”) adressering (1)  De stack is een “Last-In-First-Out” geheugen  “push” operatie plaatst nieuwe waarde in stack bovenop alle al aanwezige waarden  “pop” operatie verwijdert “bovenste” waarde uit stack dat is dus de laatst ge“push”te waarde !  De bovenste waarde op de stack is de “top of stack”  Implementatie meestal in normaal geheugen  Met “stack pointer” (“SP”) register wijzend naar de top  Practicumprocessor: SP adresseert laatst ge“push”te waarde, stack “groeit” naar hogere adressen

17 1/1/ eindhoven university of technology / faculty of Computer Science 17 Stack (“stapel”) adressering (2)  Stack is handig  Uitstekend geschikt voor tijdelijke opslag  Precies adres niet nodig en toch weten waar alles is  Stack is belangrijk  Centrale rol bij uitvoeren hogere programmeertalen  Bij sommige machines vervanging van registers Het boek gaat hier nog veel verder op in: zelfstudie. Het postfix-infix conversie-algoritme hoort niet bij de stof !

18 1/1/ eindhoven university of technology / faculty of Computer Science 18 Adresseermodi voor “sprongen”  PC wijst steeds naar volgende instructie  Laden PC met nieuwe waarde: sprong in programma  “PC-relatief” is geïndexeerd met PC als register  Practicumprocessor als voorbeeld  PC-relatief, direct en basisgeïndexeerd (A+DPTR)  NIEUW: “paged” sprong (“ AJMP ”)  Geheugen verdeeld in 2 kilobyte grote blokken (“pages”)  Alleen springen binnen blok waar PC al in adresseert  Slechts 11 bits nodig voor adres (2 byte instructie)


Download ppt "1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 4: Instructieformaten adressering assembleertalen (zelfstudie."

Verwante presentaties


Ads door Google