здрасьте здрасте люди добрые
объясните кто знает, почему программа не вылетает с ошибкой а уходит в цикл
.section .bss
out:
.space 8
.section .data
frt: "%d"
.section .text
.global main
main:
lea out, %rsi
lea frt(%rip), %rdi
mov $0, %rax
call scanf
mov $0, %rax
mov out, %rsi
lea ft(%rip), %rdi // только тут заметил значение RIP, как надпись покойся с миром.
mov $0, %rax
call printf
mov $0, %rax
если добавить в конец ret, то что он снимет со стека? адрес следующей команды за scanf или за printf?
что тут произойдет? scanf положит на стек адрес следующей команды, а это будет mov $0, %rax. дальше все попорядку и когда дойдет до printf то на стек ляжет адрес команды следующей за printf.
а что потом? можете объяснить, как это все будет разматываться?