Directivele EQU, %define și %macro în NASM: Metaprogramare și Constante în Assembly (x86_64)

Sintaxă
NUME equ valoare
%define MACRO valoare
%macro NUME nr_argumente
%endmacro

Asamblorul NASM pune la dispoziție un preprocesor robust pentru definirea constantelor simbolice și a macrocomenzilor extinse pe mai multe linii, sporind lizibilitatea codului de nivel scăzut.

; Definire constante numerice neschimbabile:
BUFFER_SIZE     equ 4096
SYS_WRITE       equ 1
STDOUT_FILENO   equ 1

; Definire macro cu argumente:
%macro PRINT_STRING 2
    mov rax, SYS_WRITE
    mov rdi, STDOUT_FILENO
    mov rsi, %1                 ; Primul argument: adresa șirului
    mov rdx, %2                 ; Al doilea argument: lungimea șirului
    syscall
%endmacro

; Utilizarea macro-ului în cod:
PRINT_STRING mesaj_start, 12

EQU vs %define: EQU definește o constantă evaluată o singură dată la asamblare, în timp ce %define funcționează similar directivelor #define din C, permițând redefiniri ulterioare.

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Directivele EQU, %define și %macro în NASM: Metaprogramare și Constante

Ai o nelămurire despre utilizarea comenzii Directivele EQU, %define și %macro în NASM: Metaprogramare și Constante 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.