如果了解汇编语言应该知道,C语言函数的返回值是通过寄存器eax来传递的。我们可以利用clang命令来生成汇编代码,如图一,其中S开关是生成汇编代码,masm=intel是生成intel的宏汇编。查看文件夹下的文件可以看到一个.s文件,就是生成的汇编代码文件。
图二是void main情境下生成的汇编代码,可以看到箭号标出的位置是一个空操作,也就是没有返回值。
图三是int main情境下生成的汇编代码,可以看到箭号标出的位置是一个对eax置零的操作,异或xor操作是一种常见的置零寄存器的汇编指令。
从这两张图片可以看出明显的差别。