Jan Helblings Seite

x86_64 Assembly Linux

Einführung

Hi! Dies ist eine kleine und praxisnahe Einführung in x86_64-Assembly unter Linux. Der Fokus liegt darauf, zu verstehen, wie Syscalls auf niedriger Ebene funktionieren – ohne C-Runtime, ohne main, direkt mit dem Kernel.

Dieses Wissen ist grundlegend für:


Grundlagen von x86_64 Assembly

Unter x86_64 Linux arbeiten wir mit CPU-Registern wie:

Systemaufrufe werden mit der Instruktion syscall ausgeführt. Die Übergabe der Parameter erfolgt ausschließlich über Register.


Hello World in x86_64 Assembly

section .data
msg db 'Hello World', 0x0a
msglen equ $ - msg

section .text
global _start

_start:
    mov rax, 1      ; Syscall-Nummer für write
    mov rdi, 1      ; stdout
    mov rsi, msg    ; Buffer
    mov rdx, msglen ; Länge
    syscall

    mov rax, 60     ; Syscall-Nummer für exit
    mov rdi, 0      ; Exit-Status
    syscall

Build & Run

nasm -f elf64 hello.asm -o hello.o
ld hello.o -o hello
./hello

Syscall-Referenzen