Proceduri și Funcții în Assembly: Instrucțiunile CALL, RET și Cadrul de Stivă (RBP) în Assembly (x86_64)

Ghid complet pentru funcții în Assembly: salvarea adresei de revenire cu CALL, restaurarea cu RET, construirea prologului și epilogului cu registrul de bază RBP.

Sintaxă
call functie | ret | push rbp; mov rbp, rsp; ...; pop rbp

Apelul de proceduri în Assembly se bazează pe cooperarea a două instrucțiuni hardware: CALL (care împinge adresa instrucțiunii următoare pe stivă și sare la funcție) și RET (care extrage acea adresă din stivă și revine în apelant).

Anatomia standard a unei funcții x86_64 (Prolog, Corp, Epilog)
global aduna_numere

section .text

aduna_numere:
    ; --- PROLOGUL FUNCȚIEI ---
    push rbp               ; Salvează vechiul cadru de bază
    mov rbp, rsp           ; Fixează noul cadru de bază al stivei
    sub rsp, 16            ; Alocă spațiu pentru variabile locale (dacă e nevoie)

    ; --- CORPUL FUNCȚIEI ---
    ; Parametrii primiți conform ABI: RDI = primul număr, RSI = al doilea număr
    mov rax, rdi           ; Copiază primul parametru în RAX
    add rax, rsi           ; Adaugă al doilea parametru (RAX = RDI + RSI)
    ; Valoarea returnată trebuie lăsată ÎNTOTDEAUNA în registrul RAX!

    ; --- EPILOGUL FUNCȚIEI ---
    mov rsp, rbp           ; Eliberează memoria locală alocată pe stivă
    pop rbp                ; Restaurează vechiul cadru RBP
    ret                    ; Extrage adresa de revenire și sare înapoi la apelant
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Proceduri și Funcții în Assembly: Instrucțiunile CALL, RET și Cadrul de Stivă (RBP)

Ai o nelămurire despre utilizarea comenzii Proceduri și Funcții în Assembly: Instrucțiunile CALL, RET și Cadrul de Stivă (RBP) 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.