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
Întrebări & Exemple de Cod:
Asamblare și Linkare cu NASM și LD: Crearea Primului Executabil ELF64Ai o nelămurire despre utilizarea comenzii
Asamblare și Linkare cu NASM și LD: Crearea Primului Executabil ELF64sau 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.