Uživatelské nástroje

Nástroje pro tento web


gas

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