Asembler w kodzie linuxa | ||
---|---|---|
<<< Wstecz | Dalej >>> |
A oto przykład programu Hello World! dla architektury Intel x86
.data # sekcja zainicjowanych danych napis: .ascii "Hello world!\n" dl = . - napis .text # sekcja kodu wykonywalnego .global _start _start: movl $dl,%edx # dlugosc wiadomosci movl $napis,%ecx # wskaznk do wiadomości movl $1,%ebx # numer deskryptora (STDOUT) movl $4,%eax # funkcja systemowa sys_write int $0x80 # wywolanie funkcji movl $0,%ebx # kod wyjscia movl $1,%eax # funkcja systemowa sys_exit int $0x80 # wywolanie funkcji systemowej |
Treść programu to dwa wywołania funkcji systemowych. Pierwsza to wywołanie funkcji write. Funkcja kopiuje do desktyptora 1 (standartowe wyjście) ciag znaków "Hello, world!", który zaczyna się pod adresem napis. Druga to wywolanie funkcji systemowej sys_exit
Program kompiluje się wydając polecenia:
gcc -c program.S ld -s -o program program.o |
Otrzymujemy plik wykonywalny, ktory następnie można uruchomić.
<<< Wstecz | Spis treści | Dalej >>> |
Wstawki asemblerowe (inline assembly) | Hello world! dla procesora SPARC |