gas
Obsah
GAS (GNU Assembler)
GAS (často volaný příkazem as) je multiplatformní nástroj, který podporuje desítky různých architektur procesorů (x86, ARM, MIPS, RISC-V atd.). Jeho nejvýraznějším rysem je tradiční používání AT&T syntaxe, která se výrazně liší od syntaxe Intel používané ve Windows.
1. AT&T vs. Intel Syntaxe
Pro začátečníky může být GAS matoucí, protože pravidla zápisu jsou v AT&T syntaxi „obráceně“ oproti standardu Intel:
| Vlastnost | AT&T (GAS výchozí) | Intel (NASM/MASM) |
|---|---|---|
| Pořadí operandů | Zdroj, Cíl (mov %eax, %ebx) | Cíl, Zdroj (mov ebx, eax) |
| Registry | Musí mít předponu % (%eax) | Bez předpony (eax) |
| Konstanty | Musí mít předponu $ ($5) | Bez předpony (5) |
| Velikost dat | Určena příponou (movl = long) | Určena operátorem (dword ptr) |
Poznámka: Moderní verze GAS již umožňují přepnout na Intel syntaxi pomocí direktivy.intel_syntax noprefix.
2. Role v procesu kompilace
GAS obvykle neběží samostatně, ale jako „skrytý“ pomocník kompilátoru GCC. Když kompilujete program v C:
1. GCC (Kompilátor) přeloží C kód do assembleru. 2. GAS (Asemblér) přeloží assembler do strojového kódu (objektový soubor ''.o''). 3. LD (Linker) spojí objektové soubory do výsledného spustitelného programu.
3. Klíčové vlastnosti
- Multiplatformnost: Díky knihovně BFD (Binary File Descriptor) dokáže generovat kód pro nepřeberné množství platforem.
- Podpora maker: Umožňuje definovat složité opakující se bloky kódu.
- Integrace s C: Je navržen tak, aby hladce spolupracoval s výstupem z kompilátoru jazyka C, což z něj činí klíčový nástroj pro vývoj jader (kernelů).
4. Použití v praxi
GAS je de facto standardem pro psaní nízkoúrovňových částí v Linuxu. Pokud například zkoumáte zdrojové kódy jádra Linuxu a nar
gas.txt · Poslední úprava: autor: admin
