Asamblare și Linkare cu NASM și LD: Crearea Primului Executabil ELF64 în Assembly (x86_64)

Ghid practic complet de la cod sursă la binar executabil: scrierea programului Hello World în NASM, asamblarea în fișier obiect ELF64, linkarea cu ld și rularea în terminal.

Sintaxă
nasm -f elf64 prog.asm -o prog.o && ld prog.o -o prog

Pentru a transforma un fișier text cu cod sursă de asamblare (.asm) într-un program executabil independent capabil să ruleze pe un sistem Linux pe 64 de biți, trecem prin două etape distincte: asamblarea (care produce un fișier obiect .o) și linkarea (care rezolvă adresele și creează binarul final ELF64).

Program complet autonom: hello.asm (Fără libc, fără dependențe)
; Fișier: hello.asm
section .data
    mesaj: db "Salut din Assembly x86_64!", 10  ; 10 = caracterul Newline '\n'
    lungime: equ $ - mesaj                      ; Calculează automat lungimea mesajului

section .text
    global _start                               ; Punctul de intrare cerut de linker-ul 'ld'

_start:
    ; 1. Afișăm textul în terminal prin sys_write:
    mov rax, 1                                  ; syscall 1 = sys_write
    mov rdi, 1                                  ; file descriptor 1 = stdout
    mov rsi, mesaj                              ; pointer către text
    mov rdx, lungime                            ; număr de caractere
    syscall

    ; 2. Încheiem execuția prin sys_exit:
    mov rax, 60                                 ; syscall 60 = sys_exit
    xor rdi, rdi                                ; cod de ieșire 0
    syscall
Comenzile din terminal pentru compilare și rulare
# 1. Asamblarea fișierului sursă în format obiect ELF pe 64 de biți:
$ nasm -f elf64 hello.asm -o hello.o

# 2. Linkarea fișierului obiect într-un binar executabil nativ:
$ ld hello.o -o hello

# 3. Rularea programului creat:
$ ./hello
Salut din Assembly x86_64!

# 4. Verificarea codului de ieșire returnat nucleului:
$ echo $?
0

# 5. Inspecția dimensiunii binarului generat (sub 9 KB!):
$ ls -lh hello
-rwxr-xr-x 1 root root 8.8K hello
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Asamblare și Linkare cu NASM și LD: Crearea Primului Executabil ELF64

Ai o nelămurire despre utilizarea comenzii Asamblare și Linkare cu NASM și LD: Crearea Primului Executabil ELF64 sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.