在看过了上面的几节之后,在潜意识中你想记住的东西肯定很多了。这个时候,你需要静下心来休息一下在沉淀一下。
"Now is a good point to take a break to let this information sink in."
下面,我们就看看C语言撰写的程序,在不同的CPU架构下,生成的汇编语言是怎么样的,各有什么特点,这和前面介绍的各种CPU架构的知识是如何联系的。如果你觉得还不够,也很高兴一起来探讨一下在不同的CPU架构下,函数的调用时如何实现的,以及各有什么特点。
反汇编文件
测试用的C源码如下,main.c文件:
#include <stdio.h>
int add(int a,int b)
{
return a+b;
}
int main(int argc,char** argv)
{
int a,b,c;
a = 1;
b = 2;
c = fn(a,b);
return c;
}
下面为编译以及反汇编的过程。当然,ARM和MIPS的编译和反汇编是使用的交叉编译工具链。例如在我的平台下,对应的命令就是ccarm,objdumparm和ccmips,objdumpmips。
#gcc -o main.o -c main.c
#objdump -d main.o>main.a
编译成x86下面的main.o文件,注