next_inactive up previous


5.1 ISA niveau

In dit hoofdstuk wordt het ISA niveau behandeld. Belangrijk is te weten dat dit niveau tussen de hardware (microinstructie) en operating system zit.

geheugenmodellen

Ken de volgende begrippen:
  1. Big en little endian
  2. Uitlijning van bytes in het geheugen

registers

Er zijn op ISA niveau twee categorieen:
  1. gespecialiseerde registers
  2. 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.

Instructies

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.

ISA niveau van Pentium II

De Pentium kan in drie modi functioneren:
  1. real mode, hetzelfde als de 8088/8086. Klein adresseerbereik geen protectie van programma's
  2. virtuele 8086 mode, een 8088 mode in een afgeschermd geheel. Binnen deze mode wordt de 8088 nagebootst, maar een probleem kan afgevangen worden.
  3. 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)

ISA niveau JVM

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.

5.2 Datatypen

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.

5.3 Instructieformaten

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.

5.4 adressering

De adressering beschrijft hoe we de operanden voor een instructie vinden. Hiervoor bestaan een zeven-tal methoden:
  1. Onmiddellijke adressering: de instructie bevat de waarde van de operand.
  2. Directe adressering: de instructie bevat het adres van de operand
  3. Register adressering: de instructie verwijst naar een register als operand.
  4. Registerindirecte adressering: de instructie verwijst naar een register waar het adres van de oeparnd staat.
  5. Geindexeerde adressering: de instructie gebruikt een register waar een basisadres in staat en telt hier een constante bij op.
  6. Basisgeindexeerde adressering: het adres van de operand is het resultaat van de optelling van twee regsiters, met dat adres wordt de operand gevonden.
  7. 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:

5.5 Instructietypen

Grofweg kunnen we instructies als volgt indelen:

5.6 Besturingsverloop

Over dit dokument ...

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



next_inactive up previous
Leo van Moergestel 2003-05-13