Závislosť assembleru od operačného systému
Je jasné,že ak napíšeme kód a preložíme ho assemblerom pre napr. x86 architektúru, ťažko môžeme očakávať takú istú
funkcionalitu aj na procesore s inou architektúrou. Lenže ak by sme aj prenášali kód medzi x86 procesormi v tomto prípade,
ale medzi rôznymi operačnými systémami, mohli by sme mať problémy.
Programy napísané v assembleri sú ťažko prenosné medzi rôznymi operačnými systémami, pretože často obsahujú pevné systémové volania – funkcie poskytované operačným systémom a tie sa každým operačným systémom menia.
Existujú 2 základné dimenzie prenosnosti kódov napísanúých v SOJ medzi operačnými systémami:
1. Je možné úrčitý kód napísaný v nejakom symbolickom jazyku použiť v inom operačnom systéme?
Na túto otázku sa ľahko zodpovie podľa toho, či daný assembler beží pod daným OS. Zoznam pre x86 architektúru je v tabuľke nižšie.
2. Je možné rozbehnúť aplikáciu ktorá bola preložená v určitom assembleri v inom OS len rekompilovaním?
V súčasnosti to dokáže len HLA(high level assembler) vďaka HLA knižnici. Tento assembler je už blízky
vyšším prog. jazykom ale stále dokáže pracovať priamo s inštrukciami procesora.
x86 assemblery , Linux vs Windows
Asi najznamejšou architektúrou je x86. Napriek tomu, že strojový kód pre danú architektúru je univerzálny
, nájdu sa rozdiely medzi programovaním v SOJ v rôznych OS. Rozoberiem problematiku programovania v 2och
najznámejších a to Windows a Linux
- Pre Linux je najobľúbenejší assembler NASM s podobnou syntaxou ako MASM, ale dosť sa používa aj univerzálny GAS s AT&T synatoxu.
- Pre Windows je najpoužívanejší assembler MASM s Intel syntaxou.
- Zoznam softvérových prerušení a ich funkcií je iný pre Linux aj Windows
- Zoznam knižníc pre programovanie je odlišný pre Linux a Windows