11.07.2015 Views

Stránky pro předplatitele PiXELu Chcete si PiXEL předplatit a ušetřit?

Stránky pro předplatitele PiXELu Chcete si PiXEL předplatit a ušetřit?

Stránky pro předplatitele PiXELu Chcete si PiXEL předplatit a ušetřit?

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

teorieDVDPokročilé metody DVD authoringu3. díl - DVD virtuální stroj a jeho sada příkazů.Minulý díl jsme skončili s tím, že jsme <strong>si</strong>rozdělili a zhruba popsali instrukční saduDVD virtuálního stroje (dále jen DVD VM). Dnesna tento hrubý popis příkazů navážeme v druhépolovině článku, kde <strong>si</strong> ukážeme celou instrukčnísadu. Nejprve se však podíváme, jaké operace(aritmetické, logické nebo porovnávací) lze<strong>pro</strong>vádět s registry GPRM. S jejich pomocí se<strong>pro</strong>vádí na<strong>pro</strong>stá většina výpočtů, které potéovlivňují chování celého DVD disku.Operace <strong>pro</strong> nastavení hodnotyregistrů GPRMV tomto případě se jedná o příkaz SetGPRM,který vykoná buď aritmetický nebo logickýbitový výpočet. K výpočtu jsou použityhodnoty, které označíme jako zdrojový a cílovýoperand. Zatímco hodnota zdrojovéhooperandu je použita k výpočtu a po jehodokončení se nepřepisuje, hodnota cílovéhooperandu se po <strong>pro</strong>vedení výpočtu přepíševýsledkem operace. Jako zdrojový operand lze<strong>pro</strong>to použít jak registr GPRM, tak registrSPRM nebo konstantu. Cílový operand musíbýt vždy uložen v jednom z GPRM registrů,<strong>pro</strong>tože se do něj ukládá výsledek. Můžemepoužívat tyto operace:Zápis hodnoty do GPRM registru - MOVDo GPRM lze uložit hodnotu:- uloženou v jiném GPRM registru - příkazMOV GPRM0, GPRM1 <strong>pro</strong>vede zápis hodnotyregistru GPRM1 do GPRM0- uloženou v SPRM registru - příkaz MOVGPRM2, SPRM9 <strong>pro</strong>vede zápis hodnotyregistru SPRM9 do GPRM2- zadanou jako konstantu o délce 16 bitů -příkaz MOV GPRM0, 1024 zapíše do registruGPRM0 hodnotu 1024.Prohození hodnot GPRM registrů - SWPPříkaz SWP GPRM0, GPRM9 přečte hodnoturegistru GPRM0, uloží ji do registru GPRM9a přečte hodnotu GPRM9 a uloží ji do GPRM0. Pokud tedy byla před vykonáním příkazuhodnota v GPRM0 = 10 a v GPRM9 = 1, pak po<strong>pro</strong>vedení příkazu bude v GPRM0 = 1avGPRM9 = 10.Sčítání - ADDSečte hodnotu uloženou v jednom GPRMregistru s hodnotou:- uloženou v jiném GPRM registru - příkazADD GPRM0, GPRM1 sečte hodnotu registrůGPRM0 a GPRM1 a výsledek uloží do GPRM0.Předchozí hodnota GPRM0 bude ztracena.- konstanty o délce 16 bitů - příkaz ADDGPRM0, 1024 sečte hodnotu v registru GPRM0s hodnotou 1024 a výsledek uloží do GPRM0.Předchozí hodnota GPRM0 bude opět ztracena.Registry SPRM není možné používat přisčítání dvou hodnot.Násobení - MULVynásobí hodnotu v GPRM registrus hodnotou v jiném GPRM registru nebokonstantou. Možnosti zápisu (MUL GPRM0,GPRM1 a MUL GPRM0, 1024) a ukládánívýsledků jsou shodné jako u sčítání. Opětnelze použít registry SPRM.Odčítání - SUBOdečte od cílového operandu v jednom GPRMregistru:- hodnotu zdrojového operandu v jinémGPRM registru a výsledek uloží do cílovéhooperandu - příkaz SUB GPRM0, GPRM1 odečtehodnotu v GPRM1 od GPRM0 a výsledek uložído GPRM0- hodnotu konstanty a výsledek uloží docílového operandu - příkaz SUB GPRM0, 1024odečte hodnotu 1024 od GPRM0 a výsledekuloží do GPRM0.Registry SPRM není možné používat přiodečítání dvou hodnotDělení beze zbytku - DIVVydělí obsah registru GPRM hodnotou uloženouv jiném GPRM registru nebo konstantou.Možnosti zápisu a také použití obou operandůjsou podobné jako v případě odčítání (DIVGPRM0, GPRM1 - hodnota v GPRM0 se dělíhodnotou v GPRM1 a výsledek, tedy pouze jehocelá část, se uloží do GPRM0, DIV GPRM0, 1024- hodnota v GPRM1 se dělí 1024). RegistrySPRM nelze použít.Zbytek po dělení (modulo)Vypočte zbytek po dělení dvou hodnot. Zápisa použití hodnot jsou stejné, jako v případědělení beze zbytku. Například pokud jev GPRM0 jakékoliv sudé číslo a <strong>pro</strong>vede sepříkaz MOD GPRM0,2, pak výsledek uloženýv GPRM0 bude vždy nulový. Pokud budev GPRM0 liché číslo a <strong>pro</strong>vede se stejnáinstrukce, výsledek bude 1.Generování náhodné hodnoty - RNDVygeneruje novou náhodnou hodnotu, kterouuloží do registru GPRM. Generované číslo jeovlivněno hodnotou uloženou v jinémregistru GPRM nebo hodnotou konstanty,která určuje maximální možnou hodnotugenerovaného čísla:AuthoringovÈ <strong>pro</strong>gramy usnadÚujÌ psanÌ p¯Ìkaz˘pomocÌ r˘zn˝ch pr˘vodc˘. Tento je z <strong>pro</strong>gramuDVD-Lab PRO a je <strong>pro</strong> tvorbu podmÌnÏn˝ch skok˘.- příkaz RND GPRM0, GPRM1 vygeneruje doregistru GPRM0 náhodné číslo, které je menšínež hodnota uložená v GPRM1- příkaz RND GPRM0,10 vygeneruje doregistru GPRM0 náhodné číslo menší než 10.Logické funkce - AND, OR, XOR, ORVšechny logické operace se zapisují stejně jakoaritmetické operace, tedy např. AND GPRM0,GPRM1 nebo AND GPRM0,255. Výpočet sevšak <strong>pro</strong>vádí <strong>pro</strong> každý bit zvlášť (<strong>pro</strong>tožeregistry GPRM jsou 16bitové, jsou i konstantybrány jako 16bitové hodnoty). Příkaz ANDGPRM0, GPRM1 tedy vypočte „0.bit GPRM0AND 0. bit GPRM1“, „1.bit GPRM0 AND 1. bitGPRM1“ až „15. bit GPRM0 AND 15.bitGPRM1“. Chování všech tří logických funkcí jenejlépe patrné z následující tabulky.A B A AND B A OR B A XOR B0 0 0 0 00 1 0 1 11 0 0 1 11 1 1 1 0Bitové operace se nám mohou hodit tam, kdeje nutno pamatovat <strong>si</strong> více než 16 hodnot(máme k dispozici pouze 16 GPRM registrů,kam můžeme ukládat data). Například mámetest, který obsahuje 32 otázek a je nutné <strong>si</strong>pamatovat, jak byla každá otázka zodpovězena.Pokud použijeme bitové operace, budou námEditace sady p¯Ìkaz˘ ÑPre Commandsìv <strong>pro</strong>fe<strong>si</strong>on·lnÌm authoringovÈm <strong>pro</strong>gramu SonicScenarist.34 117

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!