多次call,但只有一个ret

「已注销」 2014-06-18 09:02:50

int main()
{
int a = 0;
printf("a=%d\n", a);

float f = 2.0f;
printf("f=%f\n", f);

return 0;
}


查看汇编代码,
call printf出现两次,但是ret只在程序末尾出现了一次。
ret是pop 返回地址并执行该地址的指令。

所以,不应该是第一次call printf后,调用ret,然后继续执行,直到第二次call printf,再调用ret?
...全文
113 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
www_adintr_com 2014-06-18
  • 打赏
  • 举报
回复
那两次 call 对应的 ret 是在 printf 函数的里面,你看到的 ret 是 main 函数的 ret
「已注销」 2014-06-18
  • 打赏
  • 举报
回复
奥,明白了。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧