C语言main函数反汇编的一些问题

问题描述

我使用CLion工具查看C语言的反汇编代码,如图
Mac截图
我只写了 int a = 100;为什么汇编代码会在开头空4个字节出来?

问题出现的环境背景及自己尝试过哪些方法

电脑:Mac OS
工具:CLion
我如果main方法什么都不写,movl $0x0 -0x4(%rbp)还是会出现

为什么会出现这样的情况呢???百思不得其解

有人说movl $0x0 -0x4(%rbp)是return 0;的返回值,那真是太天真了。下面我把return 0;改成return 1;你们看看是不是返回值!!!动动你们的猪脑子!!!
图片描述

阅读 4.9k
2 个回答

前面在网上找了一段解释,但不满意,所以有找了一遍,找到了基本知识,结觉得可能有关联:
http://www.runoob.com/note/26656
C 语言 int main() 和 int main(void) 的区别?

// 这样是正确的
int main()
{
if (0) main(42);
}

// 这样会出错
int main(void)
{
if (0) main(42);
}

如果int main()可以入参,那肯定需要分配内存。
楼主试一试int main(void)有否不同?抱歉我现在不方便,你自己试一试

是为把默认的返回值0存到寄存器里

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题