1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 3: Instructietypen (2)

Slides:



Advertisements
Verwante presentaties
Test computertermen: Deze test gaat over de vorige les. Je krijgt steeds een vraag te zien waarop je het juist antwoord moet aanklikken. Is je antwoord.
Advertisements



PSD Basisstructuren programmeren.
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur EIT OGO-1.2 addendum (1): Het ontwerpen van processoren.
Serieel naar parallel omzetting
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 3(2): Instructietypen.
Programmeren met Alice
Goethals Frederik Vakdidactiek 17 – Goethals Frederik
Week 1: overzicht computersysteem-organisatie
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 4(2): Digitale.
Hoofdstuk 8: Recursie.
1/1/ /e/e eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 2(1): Inleiding InstructieSetArchitectuur.
Practica Computerlinguistiek Tekst en uitleg:
Componenten van een algoritme Variabelen en hun Inhoud Instructies Sekwenties (van instructies) Selecties (tussen instructies) Herhalingen (van instructies)
bewerkingen in programmeeromgevingen
Les 5 - onderwerpen Aansturen van vier 7-segment displays
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.
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
Computerarchitectuur
Datastructuren Analyse van Algoritmen en O
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.
Hoofdstuk 6: Controle structuren
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.
1Ben Bruidegom Hoe werkt een rekenmachine? Ben Bruidegom AMSTEL Instituut Universiteit van Amsterdam.
GESPRG Les 7 Gestructureerd programmeren in C. 92 Verwisselen Schrijf een functie waarmee twee int variabelen verwisseld kunnen worden. void wissel(int.
Hoe werkt een rekenmachine?
SPAM SPAM. Heeft u veel SPAM? Kan uw provider het niet tegenhouden?
1 ICT Infrastructuren 19 november 2007 David N. Jansen.
1/1/ /e/e eindhoven university of technology OGO 1.2 project Startbijeenkomst Een microprocessor… …om warm voor te lopen.
, 17h30Recursie 1 Inleiding tot recursie Karel Popelier.
OO Analyse in de praktijk OO Analyse in de praktijk V Enkele Design Patterns.
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 4: Digitale logica niveau: “systeem-architectuur” cpu-chips.
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 2: IDaSS.
PHP & MYSQL LES 02 PHP & FORMULIEREN. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
1/1/ / faculty of Computer Science eindhoven university of technology 5B040:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 9(1): Virtual.
Programmeren met If This Then That (IFTTT)
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 5(2): Microarchitectuur.
Les 3 Basisbouwstenen (deel 2) Programmeren met Visual Basic Karl Moens.
Tircms03-p les 2 Hfdst 3,4 Meer operatoren Functies.
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.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 2 - onderwerpen  Helaas nog geen printjes.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 2 - onderwerpen MPLAB.
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:
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 3 - onderwerpen Instruction timing Shadow.
Inhoud Breuken (optellen, aftrekken, vermenigvuldigen en delen).
Programmeren. Wat is programmeren? Het schrijven van opdrachten voor de processor De processor “spreekt” machinetaal:
Gameprogrammeren: Keuzeopdrachten
Digitale Methoden Onderdeel van vak Computer Systemen
Tinpro015b-les3 Hfdst 3,4 Meer operatoren Functies.
Kennismaking met programmeren
Wat gaan we doen? Herhaling ARM assembler instructies
Small Basic Console deel 2
Tellen met kaarten.
Python – For loop + strings
Python – For loop + strings
Transcript van de presentatie:

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 2 Vergelijkingen  Waarden moeten vergeleken kunnen worden  gelijk, niet gelijk, groter, kleiner, kleiner of gelijk…..  Fors verschil: zonder teken / 2’s complement Zonder teken 00 (0) 01 (1) 10 (2) 11 (3) 2’s complement 10 (-2) 11 (-1) 00 (0) 01 (+1) Kleinste Grootste Laagste Hoogste “Above” / “Below”“Less than” / “Greater than”

1/1/ eindhoven university of technology / faculty of Computer Science 3 De “CoMPare” (CMP) operatie  Aftrekken van te vergelijken waarden zonder het resultaat op te slaan  Wel worden Carry, Overflow, Negative, Zero vlaggen gezet als bij normale “SUB”-tract  Bij aftrekken A - B: A gelijk aan B:Zero = 1 A lager dan B (zonder teken):Carry = 1 A kleiner dan B (2’s compl.): Negative XOR Overflow = 1  Overflow is hier geen fout !

1/1/ eindhoven university of technology / faculty of Computer Science 4 Voorwaardelijke sprongen  Instructie test “iets” met booleaans resultaat  Resultaat niet waar:ga door met volgende instructie  Resultaat waar:laad PC met gegeven waarde  Basis voor het nemen van beslissingen in programma !  Dat “iets” kan van alles zijn  Meestal (combinaties van) status vlaggen  Uitkomst van “ingebouwde” vergelijking  Directe test van register / geheugen waarden  Directe test van register / geheugen bit

1/1/ eindhoven university of technology / faculty of Computer Science 5 Ook onvoorwaardelijke sprongen ! Pascal: IFA = 5 THENA := 0 ELSEA := B; C: if (A == 5) A = 0; elseA = B; If:CMPA,#5 JUMPNotEQ,Else Then:MOVA,#0 JUMPAlways,Next Else:MOVA,B Next:...

1/1/ eindhoven university of technology / faculty of Computer Science 6 Repertoire van de practicumprocessor  Onvoorwaardelijk: SJMP, AJMP, LJMP  Verschillende sprong- “bereiken”  Assembler rekent en controleert!  Voorwaardelijk: Carry = 1, direct bit = 1, A = 0  En de omgekeerde tests (NOT …)  Alle voorwaardelijke sprongen zijn PC-relatief  Vergelijken en springen in een CJNE instructie  Compare and Jump if Not Equal, past Carry aan ! If:CJNEA,#5,Else

1/1/ eindhoven university of technology / faculty of Computer Science 7 Andere methoden conditieafhandeling  “Skippen”: sla volgende instructie over  Standaardvolgorde instructie ophalen blijft intact  “Conditionele executie”: sla deze instructie over CMPA,#5; IF SKIPNotEQ; THEN MOVA,#0 SKIPEQ; ELSE MOVA,B (ALWAYS) CMP A,#5 ; IF (EQ) MOV A,#0 ; THEN (NotEQ) MOV A,B ; ELSE IA-64 van Intel !

1/1/ eindhoven university of technology / faculty of Computer Science 8 Programma-lus besturing  Lussen om herhalingen te introduceren  “Blijf … herhalen tot aan voorwaarde voldaan is” test aan eind en spring conditioneel naar begin terug  “Zolang aan voorwaarde voldaan is, herhaal …” test aan begin, spring aan eind terug  Deze met normale (on) conditionele sprongen !  “Afgetelde” lus met bekend aantal herhalingen  Teller in register / geheugen initialiseren  Daarna verhogen / verlagen tot eindwaarde

1/1/ eindhoven university of technology / faculty of Computer Science 9 Afgetelde lussen (vervolg)  Oppassen met berekende begin / eind waarden  Omhoog of omlaag tellen ?  Begin = eind: instructies in lus niet uitvoeren ?  Vrij standaard: omlaag tellen tot nul  Teller in register of geheugen (N bits breed)  Beginwaarde nul geeft meestal 2 N herhalingen !  Practicumprocessor: DJNZ instructies  Decrement and Jump if Not Zero  Teller: 8 bit register of direct adres in geheugen/SFR

1/1/ eindhoven university of technology / faculty of Computer Science 10 Procedure / Subroutine / Method  Drie namen voor hetzelfde: een stuk programma (= reeks instructies) dat vanaf verschillende plaatsen in het programma kan worden aangeroepen om een bepaalde functie uit te voeren  Gebruik geeft vele voordelen  Eén keer iets verzinnen en in geheugen zetten  Efficient en minder kans op fouten  Basis van “gestructureerd programmeren”

1/1/ eindhoven university of technology / faculty of Computer Science 11 “A”: Aanroep (call) en terugkeer (return) Call “A” Return “B”: Terugkeer-adressen verschillend voor dezelfde “Return” ! Call “B”

1/1/ eindhoven university of technology / faculty of Computer Science 12 Onthouden van terugkeeradres  Adres van instructie na de “CALL” opslaan  Bij “RETURN” deze waarde in PC zetten !  Waar laat je dit adres ?  Eén vast register / geheugenadres: onhandig Kan maar één procedure tegelijk aktief zijn  Per procedure één register / geheugenadres: beter Een procedure mag zichzelf niet aanroepen: “recursie”  Op de stack: super ! Een CALL push’t het terugkeeradres op de stack Een RETURN pop’t automatisch het goede adres

1/1/ eindhoven university of technology / faculty of Computer Science 13 Recursieve procedures met stack Call “A” Return “A”: Adres X Adres Y Adres Z Stack 1: X 1 2 2: X Z 3 3: X 4: (leeg) 4 Moet soms NIET uitgevoerd worden 5: Y 6: Y Z 7: Y Z Z 8: Y Z Z Z...

1/1/ eindhoven university of technology / faculty of Computer Science 14 Invoer en uitvoer: de basis  Invoer: waarde uit buitenwereld via bus lezen  Neemt een “monster” van die waarde alleen waarde tijdens het lezen telt  Uitvoer: waarde via bus naar buitenwereld  Moet vastgehouden worden in register waarde alleen tijdens schrijven stabiel: te kort !  Erg handig om dit register ook te kunnen lezen kun je laatst geschreven waarde veranderen  Monsternemer en register heten “poorten”

1/1/ eindhoven university of technology / faculty of Computer Science 15 Geprogrammeerde invoer / uitvoer  Besturing poorten direct door programma  Veranderen van invoerwaarden moet bijgehouden worden: zeer regelmatig lezen dus (“Busy waiting”)  Voor adressering poorten meerdere methoden  Poort heeft adres in geheugen: “memory mapped”  Iedere poort krijgt eigen IN / OUT instructie  Aparte (kleine) adresruimte voor poorten met speciale IN/OUT instructies om te lezen/schrijven  Practicumprocessor: directe adressen

1/1/ eindhoven university of technology / faculty of Computer Science 16 Invoer / uitvoer met “interrupts”  Interrupt: automatisch onderbreken van lopend programma bij activiteit in buitenwereld  Buitenwereld hardware geeft één bit aan processor  Processor hardware test dit bit na uitvoeren iedere instructie, vóór het ophalen van de volgende  Bij indicatie van activiteit automatische aanroep van een procedure op een vast adres: “interrupt routine”  Bij RETURN van interrupt routine doorgaan met volgende instructie (alsof er niets gebeurd is)  Tijdens interrupt routine geprogrammeerde I/O

1/1/ eindhoven university of technology / faculty of Computer Science 17 I /O met “Direct Memory Access” (DMA)  Interrupts gebruiken processor-tijd: traag !  Geef device controller zelf toegang tot geheugen  Alleen voor eigenlijke lees / schrijf acties processor van bus “afduwen” is veel sneller: “cycle stealing”  Controller geeft pas interrupt als ‘ie klaar is met zijn werk of hulp van de processor nodig heeft  Aparte DMA controller “helpt” device controller  Tellers en adres-registers voor blokken gegevens  Soms speciaal type processor met eigen programma