Ľudmila Jánošíková | ||||||||||||||||||||||||||||||||
Programovanie v jazyku symbolických adries | ||||||||||||||||||||||||||||||||
pre 32-bitové procesory Intel | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
Reálna aritmetika
Operácie s číslami v pohyblivej rádovej čiarke zabezpečuje výkonná jednotka procesora označená FPU (Floating-Point Unit). FPU umožňuje prácu s nasledujúcimi typmi dát:
Základnou časťou FPU je osem 80-bitových registrov označených R0 až R7 a organizovaných ako zásobník, ktorý rastie od registra R7 k registru R0. Do týchto registrov sa ukladajú operandy inštrukcií. V inštrukciách sa registre označujú st(0) až st(7), pričom index je relatívny voči vrcholu zásobníka. Ďalej FPU obsahuje register známok, stavový register a riadiaci register (všetky 16-bitové) a 32-bitové ukazovatele (adresy) spracovávanej inštrukcie a operandu v pamäti. Register známok (tag register) obsahuje 8 známok (pre každý register R0 až R7 jednu). Známka je dvojbitová hodnota, ktorá nás informuje o obsahu registra:
Denormalizované číslo má najmenší exponent a nenormalizovanú mantisu, t.j. exponent je 0 a najvyšší bit mantisy (číslo pred rádovou čiarkou) je tiež 0. Nenormalizované číslo má nenormalizovanú mantisu (najvyšší bit mantisy je 0). Nekonečno znamená, že výsledok operácie je väčší (menší) ako najväčšie (najmenšie) zobraziteľné číslo. Neplatné číslo vznikne napr. pri pokuse o odmocninu zo záporného čísla. Konfigurácia stavového registra (status register) je na obr. 18. Bity 0 až 5 sú výnimky (exceptions), ktoré nás informujú o výsledku predchádzajúcej operácie. Ukazovateľ zásobníka obsahuje číslo registra, ktorý je na vrchole zásobníka. Bity C0, C2 a C3 sú podmienkové bity, ktoré sa nastavujú pri porovnaní čísiel. Chybná operácia je napr. odmocnina zo záporného čísla. Pretečenie vznikne pri pokuse uložiť príliš veľké číslo v rozšírenej presnosti do premennej v menšej presnosti (jednoduchej alebo dvojnásobnej), podobne podtečenie vznikne pri pokuse uložiť príliš malú hodnotu, ktorá nie je zobraziteľná v menšej presnosti. Výnimka presnosti vznikne vtedy, keď výsledok nie je presne zobraziteľný, napr. 1/3. Chyba zásobníka vznikne pri pretečení zásobníka (pri pokuse uložiť do zásobníka deviatu hodnotu) alebo pri podtečení zásobníka (pri pokuse vybrať hodnotu z prázdneho zásobníka). Podľa bitu C1 pritom rozlíšime, ktorá z týchto dvoch situácií nastala: C1 má hodnotu 1, ak došlo k pretečeniu a hodnotu 0, ak došlo k podtečeniu. Príznak výnimky sa nastaví, keď vznikne nejaká výnimka 0 až 5 a nie je zamaskovaná (pozri riadiaci register). Tento bit predstavuje žiadosť FPU o prerušenie.
Obr. 18. Stavový register FPU
Obr. 19. Riadiaci register FPU Konfigurácia riadiaceho registra (control register) je na obr. 19. Bity 0 až 5 maskujú výnimky 0 až 5 zaznamenané v stavovom registri: ak maska obsahuje 0, pri vzniku príslušnej výnimky FPU generuje prerušenie. Hodnota 1 v maske spôsobí, že FPU výnimku len zaznamená v stavovom registri. Bity 8 a 9 určujú presnosť v priebehu výpočtu (štandardné nastavenie je 11):
Bity 10 a 11 určujú spôsob zaokrúhľovania (štandardné nastavenie je 00):
|
Načo je vám jazyk symbolických adries?
Architektúra moderných procesorov Služby operačného systému MS-DOS Služby operačného systému Windows 95/98/NT/XP |
|||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||
Vydala Žilinská univerzita v Žiline, 2000. ISBN 80-7100-723-4. Otázky a pripomienky môžete poslať autorke. Naposledy upravené 14.11.2007. |