7: De Hypothetische x86 Flashcards

1
Q

Welke elementen heeft de processor x86?

A
  • registers
  • ALU (arithmetic & logic unit)
  • BIU (bus interface unit)
  • Control unit met instructieset
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Wat zijn registers?

A

Speciale geheugenplaatsen in de processor.

Ze maken geen deel uit van het hoofdgeheugen.

Alle bewerkingen gebeuren in de registers van een processor.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Welke registers heeft de x86?

A

De x86 heeft 4 registers van 16 bits.

  • AX: accumulator register
  • BX: base address register
  • CX: count register
  • DX: data register
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Welke interne registers zijn er ook nog?

A
  • De instruction pointer
  • Een vlaggenregister

Deze interne registers zijn voor de programmeur niet rechtstreeks toegankelijk.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Vlaggenregister?

A

Deze interne register houdt het resultaat van een compare opdracht bij.

Daarin vinden we terug of een waarde groter, kleiner of gelijk aan een andere waarde is.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Wat is het voordeel van registers in de CPU?

A

Hierdoor werken ze sneller dan het geheugen.

Het bereiken van een geheugenadres zal een aantal klokcycli vragen. Gegevens in registers zullen meestal direct bereikbaar zijn.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Wat is het nadeel van registers in de CPU?

A

Het aantal registers is meestal zeer beperkt.

De meeste registers hebben een special purpose waardoor ze beperkt zijn in hun mogelijkheden om gegevens bij te houden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Wat gebeurt er in de ALU?

A

In de Arithmetic en Logic Unit worden de rekenkundige en logische bewerkingen uitgevoerd.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Welke stappen zijn er nodig in de ALU wanneer je de waarde 6 wil optellen bij de inhoud van het AX-register?

A
  1. kopieer de waarde van AX naar de ALU
  2. stuur de waarde 6 naar de ALU
  3. geef de opdracht aan de ALU om een optelling uit te voeren
  4. breng het resultaat terug naar het AX-register
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Waarvoor is BIU verantwoordelijk?

A

De Bus Interface Unit (BIU) is verantwoordelijk voor het besturen van de adres- en databus bij het lezen van of het schrijven naar het geheugen.

Als de processor gebruik maakt van cachegeheugen is deze unit daar ook verantwoordelijk voor.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Hoe is de instructieset van een CPU gemaakt?

A

Op basis van logische poorten.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Waarom is de instructieset eerder beperkt in omvang?

A

Om het aantal logische poorten zo klein mogelijk (toch al heel snel enkele honderduizenden) te houden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Wat doet de Control Unit?

A

De CU voert de stappen van de instructiecyclus (fetch en execute) uit.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Welk speciaal register heeft de control unit?

A

De instructiepointer.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Wat doet de instructiepointer?

A

In de instructiepointer staat het adres van een uitvoerbare instructie.

Op basis van dat adres gaat de control unit een instructie uit het geheugen halen en naar het decodeerregister brengen voor de uitvoering ervan.

Na het uitvoeren van de instructie wordt de instructiepointer aangepast zodat hij naar de volgende instructie wijst.

Deze interne register wijst naar de volgende uit te voeren instructie.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Waarmee wordt er rekening gehouden bij het ontwerp van een instructieset?

A

Dat de opcodes een veelvoud van 8 bits breed zijn.

Daardoor kunnen de instructies op een eenvoudige manier uit het geheugen gehaald worden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Hoe worden de bits van een opcode verdeeld?

A

De bedoeling is de beschikbare bits op een goede manier te verdelen tussen het veld voor de instructieklasse (move, add,…) en de velden die de operanden aanduiden (geheugenlocaties en registers).

Meer bits voor het instructieveld (meer instructies) betekent minder bits voor het operandenveld, en vice versa.

Er moet ook rekening gehouden worden met instructies die maar één operand of zelfs geen operanden gebruiken.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Over welke instructies beschikt de instructieset van x86-processoren?

A

De x86-processoren zijn voorzien van een instructieset met 20 basisklassen.

7 van die instructies hebben twee operanden, acht instructies hebben één operand en vijf instructies werken zonder operanden.

De instructies zijn MOV (2 soorten), ADD, SUB, CMP, AND, OR, NOT, JE, JNE, JB, JBE, JA, JAE, JMP, BRK, IRET, HALT, GET en PUT.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

MOV-instructie?

A

De MOV is in feite een naam voor twee klassen die samensmelten tot één instructie.

  1. MOV reg, reg/mem/const
  2. MOV mem, reg

Daarbij staat ‘reg’ voor register (AX, BX, CX, DX), ‘const’ voor een numerieke constante waarde (in hexadecimale voorstelling) en ‘mem’ voor een adres in het geheugengebied.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Welke rekenkundige en logische bewerkingen heeft de instructieset van een x86-processor?

A
  1. ADD reg, reg/mem/const
  2. SUB reg, reg/mem/const
  3. CMP reg, reg/mem/const
  4. AND reg, reg/mem/const
  5. OR reg, reg/mem/const
  6. NOT reg, reg/mem/const
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

ADD instructie?

A

Door de ADD wordt de waarde van de tweede operand bij de eerste operand geteld.

Het resultaat komt in de eerste operand terecht.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

SUB-instructie?

A

De SUB laat het verschil van de eerste operand en de tweede operand in de eerste operand achter.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

CMP-instructie?

A

De CMP vergelijkt de eerste en tweede operand en zal het resultaat in een afzonderlijk register opslaan zodat de voorwaardelijke sprongopdrachten er gebruik van kunnen maken.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

AND- & OR-instructie?

A

De AND en de OR berekenen de logische waarde (bitgewijs) van de twee operanden en slaan het resultaat op in de eerste operand.

25
Q

NOT-instructie?

A

De NOT inverteert de bits van een geheugenadres of een register.

26
Q

CONTROL TRANSFER-instructies?

A

Deze instructies verbreken de sequentiële verwerking van instructies en geven controle aan instructies die zich op andere plaatsen in het geheugen bevinden.

Dit kan al of niet voorwaardelijk gebeuren, bij voorwaardelijke instructies wordt gebruik gemaakt van het resultaat van een CMP-instructie.

27
Q

Welke CONTROL TRANSFER-instructies zijn er?

A
  • JA dest
    • jump if above
  • JAE dest
    • jump if above or equal
  • JB dest
    • jump if below
  • JBE dest
    • jump if below or equal
  • JE dest
    • jump if equal
  • JNE dest
    • jump if not equal
  • JMP dest
    • jump unconditional
  • IRET
    • return from an interrupt
28
Q

Welke I/O-instructies zijn er?

A
  • GET-instructie
  • PUT-instructie
29
Q

GET-instructie?

A

Met de GET-opdracht worden gehele waarden gelezen van het toestenbord in hexadecimale voorstelling en in het AX-register geplaatst.

30
Q

PUT-instructie?

A

De PUT plaatst de inhoud van het ax-register op het scherm (uitvoer).

31
Q

Welke instructies hebben geen operanden?

A

Dit zijn de opdrachten HLT en BRK.

32
Q

HTL-instructie?

A

De HLT-instructie zet de uitvoering van het programma stop.

33
Q

BRK-instructie?

A

De BRK laat de processor wachten op een tussenkomst van de gebruiker om opnieuw te starten.

Dit kan gebruikt worden voor het inlassen van een pause om het verloop van de code te bestuderen.

34
Q

Welke soorten operanden kunnen er in de instructies van de x86 voorkomen?

A

Er zijn 5 verschillende soorten operanden.

Dit zijn registers, constanten en 3 soorten geheugenverwijzingen.

35
Q

Welk doel hebben de verschillende operanden?

A

Elk van de 5 vormen is een adresseringswijze.

36
Q

Welke adresseringen zijn er?

A
  • register adressering
  • immediate adressering
  • indirect adressering
  • indexed adressering
  • direct adressering
37
Q

Register adressering?

A

MOV ax, cx

Kopieer cx naar ax.

De eerste operand bevat het resultaat.

38
Q

Immediate adressering?

A

MOV ax, 25

De hexadecimale waarden worden in de registers gezet.

39
Q

Direct adresseren?

A

MOV ax, [1000]

De waarde (16 bits) die vanaf adres 1000 in het geheugen staat, wordt in het ax register gezet.

40
Q

Indirect adresseren?

A

MOV ax, [bx]

De waarde van het geheugenadres dat in het bx register staat wordt het adres van waaruit de inhoud naar het ax register zal gekopieerd worden.

Merk op dat volgende opdrachtenreeksen hetzelfde resultaat hebben:

MOV bx, 1000 MOV ax, [bx]

MOV ax, [1000]

41
Q

Indexed adresseren?

A

MOV ax, [1000 + bx]

De waarde van bx wordt opgeteld bij een vaste waarde om het te fetchen adres in het geheugen te vormen.

Dit is bijvoorbeeld handig bij het verwerken van reeksen en records.

42
Q

Welke codering wordt er in het algemeen gebruikt voor opcodes?

A

Er wordt gebruik gemaakt van een gegeven aantal bits in de opcode om de instructieklasse aan te duiden (mov, add, sub) en een aantal bits om de gebruikte operanden aan te duiden.

43
Q

Welke coderingsschema gebruikt de Intel 80x86-familie?

A

De Intel 80x86-familie gebruikt een CISC coderingschema’s voor opcodes.

44
Q

Hoe ziet een typische instructie van het CISC coderingsschema eruit?

A

Een typische instructie van de x86 ziet eruit als de figuur.

De opcode bestaat uit een byte die verdeeld is in drie velden.

Om de opcode van een instructie te bepalen, moet je de juiste bits bij iii, rr en mmm invullen.

45
Q

MOV ax, bx?

A

iii = 110

rr = 00

mmm = 001

=> 1100 0001

46
Q

MOV ax, [1000]

A

iii = 110

rr = 00

mmm = 110

=> 1100 0110

Om te kunnen werken met [xxxx] en [bx + xxxx] of een constante moet er na de instructie een 16 bits adres of constante geplaatst worden.

De laagste orde byte komt onmiddellijk na de opcode van de instructie, gevold door de hoogste orde byte.

MOV ax, [1000] -> C6 00 10

MOV ax, [2000] -> C6 00 20

47
Q

Welke functie heeft de speciale opcode?

A

Het eerste veld bepaalt de klasse van de instructie. Door de 3 bits hebben we 8 combinaties. Er zijn 20 klassen, dus kunnen we ze niet allemaal voorstellen. Om dat toch te kunnen, zullen we gebruik maken van special.

Door de speciale opcode te gebruiken, kunnen we nu nog een extra aantal instructies toevoegen. Dit zijn instructies die gebruik maken van één operand of geen operanden nodig hebben.

Er zijn vier klassen van instructies met één operand. De eerste (00) wordt gebruikt om de instructies die geen operanden nodig hebben aan te geven. De tweede (01) wordt gebruikt om de verschillende spronginstructies te coderen. De derde (10) is de code voor de not instructie (bitgewijs inverteren) op de registers of de geheugenadressen. De vierde (11) is gereserveerd voor latere uitbreiding.

48
Q

Hoe worden de 7 sprongopdrachten bij de x86 gecodeerd?

A

Ze worden als volgt voorgesteld:

Jxx adres

49
Q

Wat zijn de opcodes voor de instructies die geen operanden nodig hebben?

A
50
Q

Welke opdrachten zal de Control Unit van de CPU uitvoeren bij de instructie MOV MEM, REG

A
  1. fetch de instructie uit het geheugen
  2. pas de instructiepointer aan
  3. decodeer de instructie
  4. indien nodig, fetch de operand uit het geheugen
  5. indien nodig, pas de instructiepoint aan
  6. bereken het adres van de operand
  7. neem de waarde uit het register
  8. bewaar de waarde op zijn bestemmingsadres
51
Q

Welke opdrachten zal de Control Unit van de CPU uitvoeren bij de instructie MOV REG, REG/MEM/CONST?

A
  1. fetch de instructie uit het geheugen
  2. pas de instructiepointer aan
  3. decodeer de instructie
  4. fetch indien nodig de 16 bits operand voor de instructie
  5. pas indien nodig de instructiepointer aan
  6. bereken indien nodig het adres van de operand (xxx+bx)
  7. fetch de operand
  8. sla de waarde op in het doelregister
52
Q

Welke opdrachten zal de Control Unit van de CPU uitvoeren bij de instructie ADD, SUB, CMP, AND, OR?

A
  1. fetch de instructie uit het geheugen
  2. pas de instructiepointer aan
  3. decodeer de instructie
  4. indien nodig, fetch een operand
  5. indien nodig, pas de instructiepointer aan
  6. bereken het adres van de operand
  7. haal de waarde van de operand en stuur naar ALU
  8. fetch de waarde van de eerste operand (register) en stuur naar ALU
  9. geef de opdracht aan ALU (add, sub, cmp, and of or)
  10. bewaar het resultaat in de eerste operand (register)
53
Q

Welke opdrachten zal de Control Unit van de CPU uitvoeren bij de instructie NOT?

A
  1. fetch de instructie uit het geheugen
  2. pas de instructiepointer aan
  3. decodeer de instructie
  4. indien nodig, fetch een operand
  5. indien nodig, pas de instructiepointer aan
  6. bereken het adres van de operand
  7. haal de waarde van de operand en stuur naar LAU
  8. geef de not opdracht aan de ALU
  9. bewaar het resultaat in de operand
54
Q

Welke opdrachten zal de Control Unit van de CPU uitvoeren bij de instructie JXX?

A
  1. fetch de instructie uit het geheugen
  2. pas de instructiepointer aan
  3. decodeer de instructie
  4. fetch het doeladres uit het geheugen
  5. pas de instructiepointer aan
  6. test de kleiner dan of gelijk aan vlaggen
  7. als de vlaggen aan de gegeven conditie voldoen, kopieert de CPU de constante naar het IP-register
55
Q

Wat zijn enkele opmerkingen bij de uitvoeringstijden bij de x86?

A
  • Langere instructies meer tijd vragen bij de uitvoering;
  • instructies zonder verwijzing naar het geheugen meestal sneller werken;
  • instructies met ingewikkelde adresseringswijze langer duren.
56
Q

Welke instructies worden het snelst uitgevoerd?

A

Instructies die registers gebruiken, zijn korter, gebruiken geen geheugen en geen complexe adresseringswijze. Daarom zullen ze altijd het snelst zijn.

57
Q

IRET-instructie?

A

De IRET geeft de controle terug na het uitvoeren van een interrupt service routine.

58
Q

Wat zijn de verschillende uitvoeringstijden (in klokcycli) van de verschillende instructies?

A