X86 assemblery
Do X86 architektúry zaraďujeme procesory od Intel 8008 cez Pentium 4, Intel Core, AMD Athlon 64, Opteron atď...
Do tejto architektúry patrí väčšina najpoužívanejších procesorov súčasnosti a preto sa assemblermi tejto architektúry
budem zaoberať podrobnejšie.
Obr.2 Assemblery x86 rodiny procesorov
2 syntaxe x86 assemblerov
Pre x86 JSA, ktoré prekladajú x86 assemblery existujú 2 rôzne syntaxe. Prvou je Intel syntax, ktorá sa používa vo Windowse. V minulosti sa pre Unix/Linux operačné systémy používala AT&T syntax. V súčasnosti sa ale pod Unixom používa aj Intelovská syntax.
Spomeniem len základné rozdiely v syntaxi:
» V AT&T sa píše najprv zdroj a potom cieľ, v Intelovskej naopak
» Hodnoty majú prefix $ a registre %
» Rozdielny zápis adresovania
» movl mem_location(%ebx,%ecx,4), %eax pre AT&T syntax
» mov eax, dword [ebx + ecx*4 + mem_location] pre Intel syntax
Najpopulárnejšie distribúcie X86 assemblerov
GAS (GNU assembler)
- využíva AT&T syntax
- je vytvorený pre Unix operačné systémy
- cross-assembler, beží na rôznych architektúrach CPU
- je back-end pre GNU kompilátory (Kód napísaný vo VPJ, sa prevedie najprv do symbolického kódu, potom ho GAS preloží do strojového kódu)
MASM (Macro assembler)
- využíva Intel syntax
- vyvinul ho Microsoft
- silná podpora makier
- Microsoft ho používa na písanie najnižších súčastí MS Windows
- vyvíjaný od 1980
- kombatibilný pre všetky Intel procesory
- neprenosný na iný OS
FASM (Flat assembler)
- open source Intel assembler, Intel syntax
- podporuje IA32 a X86-64 architektúry
- podpora makier
- beží pod DOS, Windows, Unixové OS (Linux, OpenBSD, atď.), MenuetOS, OctaOS, DexOS, SkyOS, Solar_OS
- bol využitý k napísaniu OS ako MenuetOS, OctaOS
NASM (Netwide assembler)
- používa Intel syntax
- podpora Windows aj Linux
- okrem iného podporuje 64bit X86 architektúry
- oproti MASM, viac prenositeľný
- oproti TASM, lacnejší