Hej, mam problem z bardzo prostym programem w asm. Pierwszy program wykonuje się poprawnie a drugi nie
extern _printf
section .text
global _main:
_main:
push dword [number]
push dword format
call _printf
add esp, 8
ret
section .data
format db "some number: %d", 0
number dd 15
Program poniżej wywala się po wypisaniu linijki z tekstem.
extern _printf
section .text
global _main:
_main:
push dword [number]
push dword format
call _printf
;add esp, 8
ret 8
section .data
format db "some number: %d", 0
number dd 15
Moje pytanie jest następujące: dlaczego instrukcja ret 8 nie działa poprawnie? Z tego co czytałem powinna ona wrócić pod adres który jest na stosie o 8 bajtów wyżej (czyli tak jakbyśmy przesunęli się z esp o 8 w górę) i oba programy powinny kończyć się bez błędu. Ta sprawa nie daje mi spokoju :(