从ASCII码源文件到可执行目标文件

来源:互联网 发布:公司里面mac是什么意思 编辑:程序博客网 时间:2024/05/22 13:29

/*main.c*/void swap();int buf[2]={1,2};int main(){     swap();     return 0;}

/*swap.c*/extern int buf[];int *bufp0=&buf[0];int *bufp1;void swap(){         int temp;         bufp1=&bufp[1];         temp=*bufp[0];         *bufp0=*bufp1;         *bufp1=temp;}


1.C预处理器(cpp)将源程序main.c翻译成一个ASCII码的中间文件main.i

2.C编译器(ccl)将main.i翻译成一个ASCII汇编语言文件main.s

3.汇编器as将main.s翻译成一个可重定位目标文件(relocateble object file)main.o

//相同过程生成swap.o

4.连接器程序ld将main.o和swap.o以及一些必要的系统目标文件组合起来,创建一个可执行目标文件

5.当我们用类似unix>./p运行可执行文件p时,加载器拷贝p中的代码和数据到存储器,然后将转移控制转移到这个程序的开头