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

Slides:



Advertisements
Verwante presentaties
5JJ20: Computerarchitectuur 2M200: Inleiding Computersystemen
Advertisements

PROS2 Les 13 Programmeren en Software Engineering 2.
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur EIT OGO-1.2 addendum (1): Het ontwerpen van processoren.
Hoe werkt een rekenmachine?
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 3(2): Instructietypen.
Programmeren met Alice
Hardware (1) SGDB Informatica.
Par. 3.1 Computers zijn overal
1/1/ / faculty of Computer Science eindhoven university of technology 2IC20:Computersystemen Week 1: inleiding.
Hardware (1) NSG Informatica.
Jerry van den Heuvel Pim van der Lee
Week 1: overzicht computersysteem-organisatie
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 4(2): Digitale.
1/1/ /e/e eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 2(1): Inleiding InstructieSetArchitectuur.
BESTURINGS SYSTEMEN Vincent Naessens.
Auteursomgeving voor Digitale Componenten
Week 6: Invoer / uitvoer “devices” adresdecodering
PowerPC Practicum. Introductie Doel practicum = Computers begrijpen Leer de werking van een computer door een emulator te bouwen.
1/1/ /e/e eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 2(2): Instructieformaten adressering assembleertalen.
Week 2: Microarchitectuur niveau ALU en datapad
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 6: Practicumprocessor invoer en uitvoer.
5JJ20: Computerarchitectuur 2M200: Inleiding Computersystemen
C programma int main(){ } Compilatie met devc++ in file main.c Gecompileerd programma in file FirstProgram.exe Mov R1, 120 Mov R2, 160 ADD R1, R2.
Slide 1Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Instructie set: principes.
1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays Functies Records Dynamische gegevenstructuren Macro’s C.
1 SOCS Hoofdstuk 3 Basisprogrammatuur. 2 Inhoud De Vertaler De Voorvertaler De Lader De Binder De Vertolker  Werking van vertolker  Voor- en nadelen.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
De processor.
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
5JJ20: Computerarchitectuur 2M200: Inleiding Computersystemen
1/1/ /e/e eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 3(1): Instructietypen (1)
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 1(2): overzicht.
1/1/ / faculty of Computer Science eindhoven university of technology 5B040:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 7(1): Flow of.
1/1/ / faculty of Computer Science eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 7(2): Vertalen.
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 6(1): Invoer.
Geheugenbeheer ICT Infrastructuren hoofdstukken 7 en 8.1.
1Ben Bruidegom Hoe werkt een rekenmachine? Ben Bruidegom AMSTEL Instituut Universiteit van Amsterdam.
1Ben Bruidegom 1 Hoe werkt een “loopje” nu precies? Recapitulatie rekenmachines week 1 Van rekenmachine naar rekenmachine met “loopjes”
Auteursomgeving voor Digitale Componenten
1Ben Bruidegom A Harvard Machine Recapitulatie Calculator Calculator  Calculator met “loopjes” Calculator met “loopjes”  Processor.
Hoe werkt een rekenmachine?
1Ben Bruidegom 1 De Harvard Machine Van rekenmachine met “loopjes” naar processor.
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
1 ICT Infrastructuren 19 november 2007 David N. Jansen.
Power PC Assembler. Assembler toolkit bevat Assembler zelf Linkerlibrarian.
1/1/ /e/e eindhoven university of technology OGO 1.2 project Startbijeenkomst Een microprocessor… …om warm voor te lopen.
Klik ergens op het witte deel van deze pagina om verder te gaan
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 2IC20:Computersystemen Week 4: Inleiding InstructieSetArchitectuur (ISA) datatypen.
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 3: Instructietypen (2)
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 4: Digitale logica niveau: “systeem-architectuur” cpu-chips.
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 2: IDaSS.
Processor Hart van de computer.
Samenwerking tussen processor, registers en RAMgeheugen
Schijvenbeheer Disk Management t/m
1/1/ / faculty of Computer Science eindhoven university of technology 5B040:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 9(1): Virtual.
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 5(2): Microarchitectuur.
PEMSY1http:// 1  Herhaling ARM assembler instructies  branch instructie  conditionele instructies en de flags  oefening.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  herhaling ARM assembler instructies  assembler.
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  programma draaien vanuit ROM.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 6 - onderwerpen Uitleg.
Tircms02-p les 2 Meer operatoren Arrays en pointers Types en conversie.
VPEMSY1, D3ECPT2 : ARM Assembler 1 Hogeschool Utrecht / Electrical Engineering & Design 1  Herhaling: CMP, CMN,
PEMSY1http:// 1  Herhaling nieuwe instructies van vorige week  nieuw: combineren van assembler en C  oefeningen: assembler.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag top-down decompositie Opdrachten:
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  Een (vaste) melodie spelen op de PC speaker 
Code compressie in Embedded Systems Onno Kievit ET4074 Kwantitatieve aspecten van computer architectuur.
3 Hardware 3.1 De processor en intern geheugen
Wat gaan we doen? Herhaling ARM assembler instructies
Software Development fundamentals
Transcript van de presentatie:

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

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 !

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

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) OpcodeAdres 1Adres 2Adres 3

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

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

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

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

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

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 : intern geheugen ; adressen : SFR’s

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 !

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 (‘at’): ADD tel waarde in intern geheugen ; (op adres in R1) op bij A register

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

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 ; “MOVe Code”: laad A register ; met waarde in programmageheugen ; op adres dat som is van A+DPTR

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”

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

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 !

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)