如何解决组装过程中的奇怪行为
我试图在一个过程中将eax变量增加2,然后将eax值压入堆栈/将结果传递给printf:
; nasm -f elf test.asm && gcc -m32 -o test test.o
section .text
global main
extern printf
add_by_2:
add eax,2
push eax
push message
call printf
add esp,8
ret
main:
mov eax,1
call add_by_2
call add_by_2
call add_by_2
ret
message db "%d",0xa,3,0
第三次调用后,eax变量不增加2。
标准输出:
3
5
5
预期的标准输出:
3
5
7
此代码有什么问题?
我如何更正代码,即使在第三次调用add_by_2
之后也可以正确地将eax递增2。
我乐于接受任何将eax中存储的数字增加2的方法(即使我需要使用其他寄存器也是如此)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。