У меня есть следующий код Assembly:RET вызывает Segfault в сборке
.text
.global main
main:
push %r13
push %r14
push %r15
jmp rest
x:
.data
y0: .quad 0
.text
mov %r14, y0
mov $format,%rdi
push y0
popq %rsi
movq %rsi, %r15
call printf
mov $format,%rdi
mov $10,%rsi
call printf
ret
rest:
movq $5, %r9
pushq %r9
popq %rsi
movq %rsi, %r14
jmp x
mov $0,%rax
pop %r15
pop %r14
pop %r13
ret
.data
format:
.byte 37
.byte 108
.byte 117
.byte 0
Я надеялся, что в отставке сделает программу переходить туда, где это было: однако, я получаю ошибку сегментации. Почему это?
Напоминание, как 'pushq% r9'' popq% rsi', похоже, было бы проще, заменив на 'mov% r9,% rsi' –
. Я рекомендую вам выполнить свой код в отладчике, таком как _GDB_ –
. характер вашего первого вопроса. Если у вас есть другой вопрос, пожалуйста, создайте новый вопрос. Ваши изменения делают комментарии и ответы бессмысленными. Я снова изменил свое изменение на оригинальную версию. –