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

/*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中的代码和数据到存储器,然后将转移控制转移到这个程序的开头


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值