| 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 |