Instrucțiunea LEA (Load Effective Address) este unică în x86: deși folosește paranteze drepte [...] (sintaxa specifică accesării memoriei RAM), LEA nu accesează niciodată memoria RAM! În schimb, ea calculează doar adresa matematică rezultată și stochează acea adresă direct în registrul destinație.
Comparație directă între MOV și LEA
; Să presupunem că registrul RBX conține adresa de memorie 0x1000
; iar la adresa 0x1000 în RAM se află valoarea 42.
; 1. Cu MOV: dereferențiază memoria și citește conținutul:
mov rax, [rbx] ; RAX primește valoarea 42!
; 2. Cu LEA: calculează doar adresa, fără acces RAM:
lea rax, [rbx] ; RAX primește valoarea 0x1000!
; 3. Utilizarea celebră a lui LEA pentru calcule aritmetice într-un singur ciclu:
; Formula generală x86: [bază + index * scară + deplasament]
; unde scara poate fi 1, 2, 4 sau 8.
; Exemplu: Calculăm x = y * 5 + 12 fără a folosi instrucțiunea lentă IMUL:
; Dacă RDI conține 'y':
lea rax, [rdi + rdi*4 + 12] ; RAX = y + (y * 4) + 12 = y * 5 + 12 !
Întrebări & Exemple de Cod:
Instrucțiunea LEA (Load Effective Address): Calculul Adreselor și Aritmetică RapidăAi o nelămurire despre utilizarea comenzii
Instrucțiunea LEA (Load Effective Address): Calculul Adreselor și Aritmetică Rapidă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.