Arhitectura Registrelor x86_64: RAX, RBX, RCX, RDX, Pointeri și RFLAGS în Assembly (x86_64)

Ghid complet pentru registrele procesorului x86_64: cele 16 registre generale, sub-diviziunile pe 32/16/8 biți, rolul pointerilor RSP/RBP și registrul de flag-uri RFLAGS.

Sintaxă
rax (64-bit) | eax (32-bit) | ax (16-bit) | al / ah (8-bit)

Registrele reprezintă cele mai rapide zone de memorie fizică din interiorul microprocesorului, având timpi de acces de sub un ciclu de ceas. Arhitectura x86_64 pune la dispoziție 16 registre de uz general pe 64 de biți (extinse de la cele 8 registre pe 32 de biți din epoca x86).

Pentru a menține compatibilitatea descendentă completă, fiecare registru de 64 de biți poate fi accesat și ca sub-registru pe 32, 16 sau 8 biți:

Ierarhia și divizarea registrului RAX
|-------------------------------- RAX (64 biți) --------------------------------|
                                |-------------- EAX (32 biți) --------------|
                                                            |----- AX (16 biți) ----|
                                                            |-- AH (8b) -|-- AL (8b) |
63                             32 31                       16 15        8 7         0
Registru 64-bit Nume istoric Rol specific în convențiile de apel Varianta 32-bit / 8-bit
RAX Accumulator Stochează valoarea returnată de funcții și numărul syscall-ului. EAX / AL
RDI Destination Index Parametrul 1 transmis unei funcții în Linux / macOS. EDI / DIL
RSI Source Index Parametrul 2 transmis unei funcții în Linux / macOS. ESI / SIL
RDX Data Register Parametrul 3 transmis unei funcții; I/O și multiplicare/împărțire. EDX / DL
RCX Count Register Parametrul 4; contor implicit pentru bucle și deplasări de biți. ECX / CL
R8, R9 General 8 & 9 Parametrii 5 și 6 transmiși unei funcții. R8D / R8B
RSP Stack Pointer Indică întotdeauna vârful curent al stivei hardware de memorie. ESP / SPL
RBP Base Pointer Fixează baza cadrului de stivă (Stack Frame) al funcției curente. EBP / BPL
Regulă critică de zero-extensie pe 32 de biți: În arhitectura x86_64, orice scriere într-un registru pe 32 de biți (de exemplu mov eax, 10) resetează automat la zero cei 32 de biți superiori ai registrului RAX! În schimb, scrierile pe 16 biți (AX) sau 8 biți (AL) lasă biții superiori neschimbați.
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Arhitectura Registrelor x86_64: RAX, RBX, RCX, RDX, Pointeri și RFLAGS

Ai o nelămurire despre utilizarea comenzii Arhitectura Registrelor x86_64: RAX, RBX, RCX, RDX, Pointeri și RFLAGS 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.