1/1/ /e/e eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 2(2): Instructieformaten adressering assembleertalen.

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.
Aflezen van analoge en digitale meetinstrumenten
Hoe werkt een rekenmachine?
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 3(2): Instructietypen.
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.
Hardware (2) SGDB Informatica.
Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Inhoudstafel  Inleiding  De basis van digitaal ontwerp  Combinatorische schakelingen.
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/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 4: Instructieformaten adressering assembleertalen (zelfstudie.
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 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
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 2: IDaSS.
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.
Ordenen van gegevens Inleiding informatiesystemen © Sander Cox.
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.
Microcontrollers Theorie 8051 based microcontroller ADuC832 from Analog Devices 01/2016 Roggemans M. (MGM)
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/ /e/e eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 2(2): Instructieformaten adressering assembleertalen (zelfstudie !)

1/1/ /e/e eindhoven university of technology 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/ /e/e eindhoven university of technology 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/ /e/e eindhoven university of technology 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/ /e/e eindhoven university of technology 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/ /e/e eindhoven university of technology 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/ /e/e eindhoven university of technology 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/ /e/e eindhoven university of technology 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/ /e/e eindhoven university of technology “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/ /e/e eindhoven university of technology 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/ /e/e eindhoven university of technology 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/ /e/e eindhoven university of technology 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/ /e/e eindhoven university of technology 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/ /e/e eindhoven university of technology 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 (“indexeerd”) 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/ /e/e eindhoven university of technology 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/ /e/e eindhoven university of technology 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 verwijderd “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/ /e/e eindhoven university of technology 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/ /e/e eindhoven university of technology 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)