GNU Assembler
GNU Assembler, známý jako gas nebo jednoduše as, je překladač jazyka symbolických adres, nazývaný Assembler, používaný v Projektu GNU. Používá se pro překlad GNU operačního systému, Linuxového jádra a různého dalšího softwaru. Je součástí balíku GNU binutils. Spustitelný soubor GASu je v Unixu standardně pojmenován as, což označuje výchozí assembler. GAS je multiplatformní, funguje a zároveň překládá na mnoha různých architekturách. Je vydán pod licencí GNU General Public License v3 a je označován jako svobodný software. Obecná syntaxeDirektivyGAS používá direktivy (někdy nazývané pseudo operace), což jsou klíčová slova začínající tečkou, které fungují podobně jako direktivy preprocesoru v jazyce C. Většina těchto direktiv je platná pro všechny platformy, ale jsou i konkrétní pro vybrané platformy.[1] KonstantyKonstanty se zapisují jako direktivy s určeným datovým typem a hodnotou, která může být zapsaná ve více formách.[2] KomentářeGAS podporuje dva styly psaní komentářů, víceřádkové a jednořádkové.[3] Jednořádkové komentáře mají několik různých formátů, závisejících na tom pro jakou platformu se překládá.
Víceřádkové komentáře, stejně jako v C, začínají a končí zrcadlícím se lomítkem s hvězdičkou: /*
komentář
*/
PoužitíPoužívá se jako back-end pro populární sadu překladačů GCC. I díky tomu je GNU Assembler široce používaný při kompilování moderního open source softwaru. GAS je často používán jako assembler na Linuxových operačních systémech ve spojení s dalším GNU softwarem. Modifikovanou verzi lze také nalézt ve vývojových nástrojích pro operační systém Macintosh od doby OS X. Příklad programuOd verze 2.10, lze využít i klasickou Intel syntaxi, při použití Standardní “Ahoj, světe!” program pro Linux Binova na architektuře IA-32: .globl _start
.text
_start:
movl $len, %edx
movl $msg, %ecx
movl $1, %ebx
movl $4, %eax
int $0x80
movl $0, %ebx
movl $1, %eax
int $0x80
.data
msg:
.ascii "Ahoj, svete!\n"
len = . - msg
ReferenceV tomto článku byl použit překlad textu z článku GNU Assembler na anglické Wikipedii.
|
Portal di Ensiklopedia Dunia