Salve a tutti, mi è venuto un dubbio riguardo il salvataggio dei registri quando chiamo una funzione x86 da un programma C:
Sintassi AT&T (GAS)
codice:
.section .text
.globl foo
foo:
pushl %ebp
movl %esp, %ebp
# e fino a qui ci siamo, ma ora sorge il dubbio:
pushl %ebx
pushl %edi
pushl %esi
#.....
end:
popl %esi
pool %edi
popl %ebx
movl %ebp, %esp
popl %ebp
ret
Le push di %ebx %edi ed %esi vanno fatte per salvare qualcosa?Per evitare Problemi con ai registri?E gli altri registri? Non vanno fatte?
Nel caso in cui la funzione chiamante fosse stata un'altra funzione assembly avrei fatto le push e le pop nella chiamante.
Spero in un vostro aiuto :3
Ciaoooo