Ho già provato ad inserire le ret, come anche a creare un nuovo stack frame:
push ebp
mov ebp, esp
altro codice...
mov esp, ebp
pop ebp
Ma ottengo sempre un errore di segmentazione. Mi suona essere una cosa strana, mentre se stampo una semplice stringa nel seguente modo:
section .text
global _start
_start:
mov ebx, 0x1
mov ecx, stringa
mov edx, len
mov eax, 0x4
int 80h
(qui con e senza ret)
section .data
stringa db "Hello World", 0xa
len equ $-stringa
non ho nessun problema nella stampa ma comunque seguito dalla stringa errore di segmentazione. C'è da dire comunque che utilizzando gdb come debugger noto che dopo quell'operazione li che a runtime viene eseguita c'è ne sono molte altre, ci sono molte mov e add.
Non riesco a capire come mai, sarà un problema del compilatore?