- gcc HelloWorld.c -E -o HelloWorld.i预处理:加入头文件,替换宏。
- gcc HelloWorld.c -S -c HelloWorld.s编译:包含预处理,将C程序转换成汇编程序。
- gcc HelloWorld.c -c HelloWorld.o汇编:包含预处理和编译,将汇编程序转换成可链接的二进制程序。
- gcc HelloWorld.c -o HelloWorld链接:包含以上所有操作,将可链接的二进制程序和其它别的库链接在一起,形成可执行的程序文件
objdump -d a.out 程序,得到 a.dump
第一列为地址
第二列为十六进制,表示真正装入机器中的代码数据
第三列是对应的汇编代码
第四列为注释
为了实现C语言的调用和返回功能,cpu实现了函数调用和返回指令,即上图中汇编代码的“ret” “call”,思考这两个指令在逻辑上执行的操作是怎样的?



