In dit hoofdstuk wordt het ISA niveau behandeld. Belangrijk is te weten
dat dit niveau tussen de hardware (microinstructie) en operating system zit.
Ken de volgende begrippen:
- Big en little endian
- Uitlijning van bytes in het geheugen
Er zijn op ISA niveau twee categorieen:
- gespecialiseerde registers
- algemene registers
Het flagsregisters of PSW bevat ondermeer conditiecodes.
Daarnaast zijn er speciale bits die sterk CPU afhankelijk zijn zoals machinemodus, tracebit, prioriteitsniveau en interrupt enable bits.
De instructieset is de verzameling instructies die een CPU kan uitvoeren.
Er bestaan instucties voor transport van en naar het geheugen, voor
bewerkingen op gegevens in registers, sprongen etc.
De Pentium kan in drie modi functioneren:
- real mode, hetzelfde als de 8088/8086. Klein adresseerbereik geen
protectie van programma's
- virtuele 8086 mode, een 8088 mode in een afgeschermd geheel. Binnen
deze mode wordt de 8088 nagebootst, maar een probleem kan afgevangen worden.
- protected mode. Een serieuze omgeveing, waarin programma's van elkaar
afgeschermd kunnen werken en elk een groot geheugenbereik hebben.
De Pentium II heeft een registerset die een aantal kenmerken van vorige
architecturen in zich heeft. Er is een beperkte hoeveelheid registers
beschikbaar. De programcounter heet EIP (Extended Instruction Pointer)
De JVM is een big endian arhcitectuur. Dynamische objecten worden in een speciaal geheugedeel met de naam heap opgeslagen. De garbage collector ruimt automatisch
niet gebruikte objecten op om de ruimte op de heap weer vrij te maken.
JVM is een stackmachine. Alle bewerkingen gebeuren op de stack.
Dit onderdeel behandelt numerieke, niet-numerieke datatypen en de datatypen van
een paar voorbeelsmachines waaronder de Pentium II.
Onder niet-numeriek datatypen wordt verstaan de boolean, de verzameling
van booleans zoals bitmaps en de tekensets zoals ASCII en Unicode.
Ook de pointer (een machineadres) is een niet numeriek datatype.
De pentium kent intergers van 8, 16 en 32 bits met en
zonder teken. Verder een 8 bits BCD integer en 32 en 64 bits floating point.
In instructiebits kan ofwel alleen de instructie of de instructie in
combinatie mer een of meer operanden weergegegevn zijn. Gebruikelijk zijn
instructies met een, twee of drie operanden.
Instructies kunnen een vaste lengte of een variabele lengte hebben.
Om bij een gegeven hoeveelheid bits de instructies goed te verdelen is een
systematische aanpak gebruikelijk. In het onderdeel expanderende
opcodes wordt dit toegelicht. Bij een evoluerdende architectuur zoals de IA32
zijn wat kunstgrepen toegepast om extra opcodes toe te voegen de opcode 0xFF
is een zogenoemde escape code.
De adressering beschrijft hoe we de operanden voor een instructie vinden.
Hiervoor bestaan een zeven-tal methoden:
- Onmiddellijke adressering: de instructie bevat de waarde van de operand.
- Directe adressering: de instructie bevat het adres van de operand
- Register adressering: de instructie verwijst naar een register als operand.
- Registerindirecte adressering: de instructie verwijst naar een register waar het adres van de oeparnd staat.
- Geindexeerde adressering: de instructie gebruikt een register waar een basisadres in staat en telt hier een constante bij op.
- Basisgeindexeerde adressering: het adres van de operand is het resultaat van de optelling
van twee regsiters, met dat adres wordt de operand gevonden.
- Stack-adressering: de operand(en) bevindt zich op de stack.
Bij de laatste vorm is de posfixnotatie of omgekeerde Poolse notatie
(Reverse Polish Notation, RPN) van belang.
Een uitdrukking met haakjes is via een omschrijfsysteem om te zettten
naar RPN.
Bij sprongopdrachten kennen we:
- directe adressering (absolute sprong)
- registerindirecte adressering (computed GOTO)
- PC-relatieve adressering
Grofweg kunnen we instructies als volgt indelen:
- Verplaatsen van gegevens
- Operaties op twee operanden (dyadische operaties)
Voorbeelden hiertvan zijn rekenkundige bewerkingen. Een andere groep zijn de
boolean instrcties. Let op hoe de bitwise AND, OR en EXOR werken.
Merk op dat hier het begrip masker een rol speelt.
- Operaties op een operand (monadische operaties)
Schuiven, roteren, complement, inverteren (NOT).
- Vergelijkingen en conditionele sprongen.
compare, jump EQ, LT, GT etc.
- procedure aanroepen.
Subroutine calls.
- Lusbesturing. Let op test aan begin of eind van de lus. In het laatste
geval wordt de lus altijd minimaal een keer doorlopen.
- I/O instructies.
Let op de drie vormen van I/O bij pc's:
- programmed I/O met busy waiting
- interrupt driven I/O
- I/O op basis van DMA
Weet wat DMA is en hoe het in zijn werk gaat en waarom het gebruikt wordt.
- Sequentieel besturingsverloop en sprongen.
- Procedures.
Let op het verschijnsle recursie, hierbij roept een procedure zichzelf aan.
- Coroutines. Beurteling wordt een stuk van twee routines uitgevoerd.
- Traps
- Interrupts
Samenvatting COSY2
This document was generated using the
LaTeX2HTML translator Version 2002 (1.62)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -split 2 tan5.tex
The translation was initiated by Leo van Moergestel on 2003-05-13
Leo van Moergestel
2003-05-13