Závislosť od procesora

Rozdiely medzi architektúrami procesorov

Assemblery pracujú priamo s procesormi. Majú prístup k inštrukčnej sade, registrom ale aj pamäti. Pre každú rodinu procesorov sú tieto atribúty odlišné. Zhrniem základné rozdiely medzi procesormi:

- rôzny počet registrov

- rôzna funkcionalita registrov

- rôzna veľkosť registrov (8bit, 16bit, 32 bit, 64bit)

- rôzne oprávnenia prístupu k registrom

- rôzne inštrukčné sady

- rôzne veľkosti inštrukcií

- rôzne módy vykonávania inštrukcií

- rôzna ortogonalita inštrukčnej sady

Rôzne procesory - rôzne assemblery
Keď vidíme, v koľkých atribútoch sa procesory medzi sebou líšia, je logické, že pre každú architektúru procesorov musí existovať špeciálny assembler. Práve stým súvisí aj najväčší problém JSA a tým je prenosnosť programov medzi rôznymi architektúrami procesorov. Nestačí totiž len prekompilovať zdrojový kód assemblerom príslušného procesoru. Ten assembler nebude poznať množstvo inštrukcií, ktoré assembler na pôvodnom procesore poznal. Assembler nebude poznať niektoré registre, ktoré assembler na pôvodnom procesore poznal. A takto by sme mohli vymenuvávať problémy kompatibility donekonečna.
Jeden procesor - rôzne assemblery
Dokonca sa stretávame aj stým, že pre 1 typ procesorov existuje množstvo rôznych distribúcií assemblerov. Odlišujú sa v syntaxi, prípadne bežia pod iným operačným systémom.

Obr.1 Zoznam assemblerov pre rôzne architektúry procesorov
             
          

Syntaktické rozdiely assemblerov
Je nemožné aby som vymenoval všetky syntaktické rozdiely medzi assemblermi rôznych architektúr procesorov. Preto len zľahka načrtnem situáciu nasledujúcim obrázkom, ktorý porovnáva syntax, ktorú podporujú assemblery procesorov Zilong Z80 a Intelovské i8008, i8080, i8086. Vidíme, že aj napriek tomu, že všetky procesory vykonávajú niekedy tie isté inštrukcie, ich zápisy sú rôzne a tým pádom sú rôzne aj assemblery, ktoré ich prekladajú.

Obr.2 Syntaktické rozdiely medzi assemblermi rôznych architektúr procesorov
   
       

Slovník skratiek

  • JSA - jazyky symbolických adries
  • VPJ - vyššie programovacie jazyky
  • CPU - procesor
  • ISA - inštrukčná sada
  • ASM - assembler
  • OS - operačný systém

Diskusia