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