_add_a_and_b: #程序运行到这里会新建一个帧
push %ebx #把寄存器ebx的值写入add_a_and_b帧
mov %eax, [%esp+8] #esp寄存器中的地址向上移动8个字节,去除指向的值到eax寄存器中
mov %ebx, [%esp+12] #同理
add %eax, %ebx #寄存器eax加ebx,结果保存在eax中
pop %ebx #回收帧中的内存
ret
_main:
push 3 #把3入main帧 会先分配内存四个字节,然后在把3保存进去
push 2 #把2入main帧
call _add_a_and_b #调用_add_a_and_b函数
add %esp, 8 #把esp的地址加上8个字节回写到esp中,回收剩下的地址
ret
#ESP寄存器保存了栈当前最深的位置地址
汇编语言入门教程
最新推荐文章于 2023-08-09 00:52:26 发布