Instrucțiunea LEA în x86_64: Calculul Rapid de Adrese și Aritmetică în Assembly (x86_64)

Sintaxă
lea dest, [base + index*scale + disp]

Instrucțiunea LEA (Load Effective Address) calculează adresa de memorie a operandului sursă folosind unitatea hardware de adresare (AGU) a procesorului și plasează rezultatul direct în registrul destinație, fără a citi sau scrie efectiv în memorie și fără a modifica flag-urile RFLAGS.

; 1. Calculul unei adrese reale de memorie
lea rdi, [rel buffer_mesaj]     ; Încarcă adresa absolută a buffer-ului (RIP-relative)

; 2. Utilizare ca accelerator aritmetic rapid (3 operații într-un singur ciclu):
; Calculează: RAX = RBX + RCX*4 + 12
lea rax, [rbx + rcx*4 + 12]

; Calculează înmulțire cu constante fixe fără instrucțiunea lentă IMUL:
lea rax, [rax + rax*2]          ; rax = rax * 3
lea rax, [rax*8]                ; rax = rax * 8

Avantaj critic: Deoarece LEA nu alterează flag-urile de stare (ZF, SF, CF), este folosită intens de compilatoare pentru aritmetică între instrucțiunile CMP și salturile condiționate.

Moduri de scalare suportate

Factorul scale poate fi doar 1, 2, 4 sau 8, permițând indexarea directă a matricelor de bytes, words, dwords și qwords.

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Instrucțiunea LEA în x86_64: Calculul Rapid de Adrese și Aritmetică

Ai o nelămurire despre utilizarea comenzii Instrucțiunea LEA în x86_64: Calculul Rapid de Adrese și Aritmetică 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.