ebooksgratis.com

See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Conditiecode - Wikipedia

Conditiecode

Uit Wikipedia, de vrije encyclopedie

   Dit artikel zou samengevoegd moeten worden met FLAGS register, of er dient een duidelijkere afbakening tussen beide artikelen te worden gemaakt  (hier melden).

De conditiecode is in de architectuur van bijna elke computer en microprocessor een groepje bits dat een belangrijke rol speelt bij voorwaadelijke sprongopdrachten.

Inhoud

[bewerk] IBM 360

Bij de architectuur van de IBM 360 bestaat de conditiecode uit slechts twee bits. Er zijn 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 - -

Wordt een bewerking uitgevoerd, bijvoorbeeld een optelling, dan krijgt automatisch de conditiecode een waarde. Meestal wordt het resultaat 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 vergeljkingen, die geen enkel effect hebben, behalve het zetten van de conditiecode.

[bewerk] 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).

[bewerk] Moderne microprocessoren

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 (zie aldaar). De volgende bits komen voor:

naam omschrijving
C De laatste bewerking gaf overdracht uit het hoogste bit
Z Het resultaat van de laatste bewerking is nul
N Het resultaat van de laatste bewerking is negatief
H De laatste bewerking gaf overdracht van bit 3 naar bit 4 (nodig voor een daaropvolgende Decimal Adjust-instructie)
S De laatste bewerking was een aftrekking (idem - andere processoren hebben een aparte DAA-instructie, te gebruiken na optelling, en een DAS-instructie, te gebruiken na aftrekking)
I Interrupts zijn toegestaan

[bewerk] De flag C

De flag C wordt veel gebruikt en is onder andere interessant bij het optellen en aftrekken van getallen die groter zijn dan een register. Hoewel computers binair werken, geven we hier een voorbeeld met decimale getallen.

De processor heeft twee instructies om op te tellen: ADD (gewoon optellen) en ADC (optellen met overdracht). Er zijn ook twee instructies om af te trekken: SUB en SBC.

Stel dat 438 en 126 moeten worden opgeteld. De registers hebben maar ruimte voor een cijfer. We tellen eerst met ADD 8 en 6 op. Het resultaat is 4, en bovendien is er overdracht, dus de flag C wordt gezet. Daarna tellen we met ADC 3 en 2 op. Doordat de overdracht wordt bijgeteld resulteert dat in 6. Er is nu geen overdracht, dus flag C wordt nul. Ten slotte tellen we met ADC 4 en 1 op, en de som is 5. Daarmee is de optelling voltooid.

Sommige eenvoudige processors, zoals de 6502 kennen niet de ADD-instructie, maar alleen ADC. Dat betekent dat voor een simpele optelling altijd eerst de flag C op nul moet worden gezet.

[bewerk] De flag I

Is de flag I gezet, dan is het mogelijk dat de processor onderbroken wordt (een interrupt) om een dringende taak uit te voeren. Op het moment dat de interrupt optreedt, worden de conditiecodes opgeslagen. Daarna wordt flag I nul gemaakt, zodat nieuwe interrupts niet geaccepteerd worden. Is de interrupt afgehandeld, dan worden de registers hersteld, inclusief de flag I.


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -