Conditiecode

De conditiecode is de inhoud van een bepaald register in de processor van een computer.

Wordt er een instructie uitgevoerd, bijvoorbeeld een optelling, dan krijgt automatisch de conditiecode een waarde. Meestal wordt de conditiecode genegeerd, maar het is mogelijk dat het programma een voorwaardelijke sprong uitvoert, afhankelijk van de toestand van de conditiecode.

Er zijn ook instructies, zoals de vergelijkingen, die geen enkel effect hebben, behalve het zetten van de conditiecode.

IBM 360

Bij de architectuur van de IBM 360 is de conditiecode onderdeel van het Program Status Word, dat 64 bits omvat. De conditiecode zelf bestaat uit slechts twee bits. De conditiecode heeft dus vier mogelijkheden, te weten:

bitsna vergelijkingna berekeningna de instructie TMsprongopdrachten
na vergelijkingna berekeningna TM
BNOP BH
(high)
BL
(low)
BE
(equal)
BP
(plus)
BM
(minus)
BZ
(zero)
BO
(overflow)
BO
(ones)
BM
(mixed)
BZ
(zeroes)
00gelijknulnullen X---X--X---X
10kleinernegatiefgemengd X--X--X---X-
01groterpositief X-X--X------
11overflowenen X-------XX--

Connecties met de assembleertaal

Bij het ontwerp van de architectuur is rekening gehouden met de assembleertaal. Daardoor kan de sprongopdracht BM gebruikt worden na een berekening (Branch if Minus) maar ook na TM (Branch if Mixed). Het maakt voor de assembler niet uit of de M 'mixed' of 'minus' betekent. Hetzelfde geldt voor de sprongopdracht BO (Branch if Overflow of Branch if Ones).

Moderne microprocessoren: het FLAGS-register

Bij moderne microprocessoren bestaat de conditiecode uit veel meer bits. Deze werken meer onafhankelijk van elkaar. De afzonderlijke bits worden ook wel flags genoemd en gezamenlijk heten ze dan ook wel FLAGS-register.

Intel 8080

De conditiecode heet hier Flags-register en bestaat uit acht bits, die niet allemaal een betekenis hebben. Een van de bits is het interruptbit, waarmee wordt aangegeven of interrupts geaccepteerd moeten worden of niet. Dit bit is eigenlijk geen conditiecode.

De accumulator (register A) en het Flags-register worden samen PSW genoemd, van Program Status Word.

Intel x86-processors

Het FLAGS-register is een register in de Intel x86 microprocessor dat de staat bevat waar de processor zich in bevindt. Dit register is 16 bits breed. De opvolgers, de EFLAGS and RFLAGS registers, zijn respectievelijk 32 en 64 bits breed. De bredere registers zijn compatibel met de smallere registers, doordat het lage gedeelte van deze bredere registers steeds overeenkomt met de smallere registers.

Intel x86 FLAGS Register
Bit #AfkortingBeschrijvingCategorie
FLAGS
0CFCarry flagStatus flag
11Gereserveerd 
2PFParity flagStatus flag
30Gereserveerd 
4AFAdjust flagStatus flag
50Gereserveerd 
6ZFZero flagStatus flag
7SFSign flagStatus flag
8TPTrap flag (single step)System flag
9IFInterrupt enable flagSystem flag
10DFDirection flagControl flag
11OFOverflow flagStatus flag
12, 13IOPLI/O privilege level (vanaf 286)System flag
14NTNested task flag (vanaf 286)System flag
150Gereserveerd 
EFLAGS
16RFResume flag (vanaf 386)System flag
17VMVirtual-8086 mode flag (vanaf 386)System flag
18ACAlignment check (vanaf 486SX)System flag
19VIFVirtual interrupt flag (Pentium+)System flag
20VIPVirtual interrupt pending (Pentium+)System flag
21IDIdentification (Pentium+)System flag
220Gereserveerd 
230Gereserveerd 
240Gereserveerd 
250Gereserveerd 
260Gereserveerd 
270Gereserveerd 
280Gereserveerd 
290Gereserveerd 
300Gereserveerd 
310Reserved 
RFLAGS
32-630Gereserveerd 

Zie ook

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.