Un fișier binar executabil (ELF pe Linux sau Mach-O pe macOS) este împărțit în segmente logice și secțiuni cu drepturi de acces specifice (citire, scriere, execuție). Înțelegerea rolului secțiunii .bss este vitală pentru scrierea de cod compact.
Exemplu comparativ: .data vs .rodata vs .bss vs .text
; 1. Secțiunea .rodata: Date constante cu drept DOAR de citire (Read-Only Data)
section .rodata
mesaj_intampinare: db "Sistem inițializat cu succes!", 10, 0
pi_constant: dq 3.141592653589793
; 2. Secțiunea .data: Variabile globale cu valori inițiale explicite (Read-Write Data)
; Ocupă spațiu fizic direct în fișierul executabil de pe disc!
section .data
contor_evenimente: dq 1
stare_aplicatie: dd 0x01
; 3. Secțiunea .bss: Date neinițializate (Block Started by Symbol)
; NU OCUPĂ SPAȚIU PE DISC! Sistemul de operare alocă memorie cu zero la rulare:
section .bss
buffer_retea: resb 65536 ; Rezervă 64 KB de octeți neinițializați
tabel_utilizatori: resq 1024 ; Rezervă 1024 de pointere pe 64 de biți (8 KB)
flag_temporar: resd 1 ; Rezervă un întreg de 4 octeți (32-bit)
; 4. Secțiunea .text: Instrucțiuni mașină executabile (Read + Execute)
section .text
global _start
_start:
; Folosim buffer_retea fără a avea un binar umflat cu 64KB de zerouri pe disc!
mov byte [buffer_retea], 0xAA
; ...
mov rax, 60
xor rdi, rdi
syscall
| Directivă .bss | Tip rezervare | Dimensiune element |
|---|---|---|
resb N |
Reserve Bytes | N * 1 octet |
resw N |
Reserve Words | N * 2 octeți |
resd N |
Reserve Doublewords | N * 4 octeți |
resq N |
Reserve Quadwords | N * 8 octeți |
Întrebări & Exemple de Cod:
Secțiuni de Memorie și Date Neinițializate în Assembly: Directiva section .bssAi o nelămurire despre utilizarea comenzii
Secțiuni de Memorie și Date Neinițializate în Assembly: Directiva section .bsssau 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.