************** ARM8 - Compilator **************** made by Jirina Hrusova - 1.10.2000 - ---------------------------------------------------------------------------- Arm8 je procesor z rady 32-ti bitovych procesoru Advanced RISC Machines, ktere pracuji s redukovanou instrukcni sadou. Podrobny popis jednotlivych instrukci a jejich funkci naleznete na: http://www.arm.com Veskere informace jsou cerpany z techto materialu. I pres snahu, drzet se jich co nejvice, se zde vyskytuji nasledujici upravy: 1) Vyhodnocovani vyrazu, popsane jako , ktere se vyskytuji u aritmeticko-logickych instrukci, instrukce MSR, LDR a STR, je chapano jako Immediate value ( tj. primo hodnota operandu uvozena '#' ) nebo jako Label ( tj. hodnota relativni k PC ). 2) SWI (Software Interrupt), Tvar teto instrukce je: SWI , kde je jiz dale ignorovano. Tato instrukce je sice povolena, ale nenacita nic, co nasleduje bezprostredne po 'SWI'. PROGRAM: -------- Funkce programu je zkontrolovat syntakticke chyby vstupniho souboru, kterym je program napsany v assembleru Arm8, a po uspesnem dokonceni kontroly prelozi vstupni soubor do vystupniho souboru s priponou BIN. BIN je soubor typu dWord, kde dWord je datovy typ o 4 bytech. Kazda prelozena instrukce o 32 bitech je tedy prelozena do 4 bytu, ktere se v odpovidajicim tvaru zapisi do vystupniho souboru. Kompilace je rozdelena do nekolika casti: Zakladnim delenim je dvoupruchodova kompilace, ktera pri prvnim pruchodu ( RUN I ) projde vstupni soubor, najde a ohlasi chyby a nastavi odpovidajici hodnoty jednotlivym Labelum, ktere budou cteny relativne k PC. Pri druhem pruchodu ( RUN II ) jsou jiz nacitane instrukce prekladany s tim, ze jsou k dispozici vsechna potrebna data a vstup je korektni. Po dokonceni teto faze je kompilace dokoncena a je vytvoren soubor *.BIN Samotne nacitani instrukci je provadeno po radcich, kdy je INSTRUKCE rozkouskovana do 'kodu','podminky' a 'pripony'( oboji je puvodne soucasti kodu ) .... popripade 'address modu' ( u instrukci LDM, STM ) a OPERANDY jsou nacteny jako samostatne pole pro pozdejsi zpracovani. Zvlastni kategorii jsou navesti ( Labels ), ktere jsou pouzivany hlavne k instrukcim skoku ( B, BL ). NAVESTI jsou pri prvnim pruchodu nacitana do linearniho spojoveho seznamu a k nemu pridana hodnota, odpovidajici jeho pozici v prgramu. Pri volani navesti je pak tato hodnota prepocitavana relativne k PC a dosazena jako odpovidajici operand.