BPC-MIC02 - Instrukce, větvení programu. adresovací módy
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
• Nepodmíněný skok
– Provede se vždy.
• Podmíněný skok
– Provede pouze při splnění podmínky
– Při nesplnění podmínky se pokračuje sekvenčně.
Implementace podmíněných skoků
• Instrukce Compare and Branch
– BGT R1, R2, 1000
• Branch Great - skoč na adresu 1000, je-li obsah registru R1
větší než obsah R2, jinak pokračuj sekvenčně.
– Vyhodnocení podmínky i skok provádí jedna instrukce.
– Složitá instrukce, problém s implementací pipeliningu.
Implementace podmíněných skoků
• Oddělení instrukce vyhodnocení podmínky od
instrukce skoku
– Implementace podmíněných skoků s využitím příznaků
• Např. instrukce porovnání nastaví příznakové bity (C, Z, N, …).
• Na základě nastavení příznakových bitů instrukce
podmíněného skoku buď provede nebo neprovede skok.
Implementace podmíněných skoků s
využitím příznaků
LDA $60
CMP #1
BEQ 6
Podmíněné provádění instrukcí
• Instrukce se provede pouze pokud jsou
nastaveny příslušné příznakové bity.
• Např. procesory ARM:
CMP
r0, #0 ; if (x <= 0)
MOVLE
r0, #0 ;
x = 0;
MOVGT
r0, #1 ; else x = 1;
Podmíněné provádění instrukcí
• Potřebujeme-li podmíněně provést jen několik
instrukcí za sebou (cca 1-4), efektivnější než
použití podmíněného skoku.
• Pro více instrukcí je naopak výhodnější použít
podmíněný skok, protože podmíněné
provádění instrukcí by zabralo více hodinových
taktů.
Počet adres operandů v instrukci
• Budeme uvažovat např. instrukci sčítání dvou
operandů (ADD).
• Teoreticky může taková instrukce obsahovat:
– 3 adresy.
– 2 adresy.
– 1 adresu.
3 adresové instrukce
• Obsahují:
– Operační znak.
– Adresu 1. operandu.
– Adresu 2. operandu.
– Adresu pro uložení výsledku.
• Nejpřirozenější.
• Ale příliš dlouhé, proto se dnes prakticky
nepoužívají.
2 adresové instrukce
• Obsahují:
– Operační znak.
– Adresu 1. operandu.
– Adresu 2. operandu.