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:
| bits | na vergelijking | na berekening | na de instructie TM | sprongopdrachten | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| na vergelijking | na berekening | na TM | |||||||||||||
| B | NOP | BH (high) |
BL (low) |
BE (equal) |
BP (plus) |
BM (minus) |
BZ (zero) |
BO (overflow) |
BO (ones) |
BM (mixed) |
BZ (zeroes) | ||||
| 00 | gelijk | nul | nullen | X | - | - | - | X | - | - | X | - | - | - | X |
| 10 | kleiner | negatief | gemengd | X | - | - | X | - | - | X | - | - | - | X | - |
| 01 | groter | positief | X | - | X | - | - | X | - | - | - | - | - | - | |
| 11 | overflow | enen | X | - | - | - | - | - | - | - | X | X | - | - | |
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 # | Afkorting | Beschrijving | Categorie |
| FLAGS | |||
| 0 | CF | Carry flag | Status flag |
| 1 | 1 | Gereserveerd | |
| 2 | PF | Parity flag | Status flag |
| 3 | 0 | Gereserveerd | |
| 4 | AF | Adjust flag | Status flag |
| 5 | 0 | Gereserveerd | |
| 6 | ZF | Zero flag | Status flag |
| 7 | SF | Sign flag | Status flag |
| 8 | TP | Trap flag (single step) | System flag |
| 9 | IF | Interrupt enable flag | System flag |
| 10 | DF | Direction flag | Control flag |
| 11 | OF | Overflow flag | Status flag |
| 12, 13 | IOPL | I/O privilege level (vanaf 286) | System flag |
| 14 | NT | Nested task flag (vanaf 286) | System flag |
| 15 | 0 | Gereserveerd | |
| EFLAGS | |||
| 16 | RF | Resume flag (vanaf 386) | System flag |
| 17 | VM | Virtual-8086 mode flag (vanaf 386) | System flag |
| 18 | AC | Alignment check (vanaf 486SX) | System flag |
| 19 | VIF | Virtual interrupt flag (Pentium+) | System flag |
| 20 | VIP | Virtual interrupt pending (Pentium+) | System flag |
| 21 | ID | Identification (Pentium+) | System flag |
| 22 | 0 | Gereserveerd | |
| 23 | 0 | Gereserveerd | |
| 24 | 0 | Gereserveerd | |
| 25 | 0 | Gereserveerd | |
| 26 | 0 | Gereserveerd | |
| 27 | 0 | Gereserveerd | |
| 28 | 0 | Gereserveerd | |
| 29 | 0 | Gereserveerd | |
| 30 | 0 | Gereserveerd | |
| 31 | 0 | Reserved | |
| RFLAGS | |||
| 32-63 | 0 | Gereserveerd | |
Zie ook
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.