语言编译的步骤及装入执行过程

一、预处理

主要功能:处理程序中的预处理语句

1.文件包含;

2.宏的替换;

3.条件编译;

 

二、编译扫描(符号扫描=>汇编代码)

主要功能:将预处理完的程序扫描符号生成,翻译成汇编代码;

?是否变量地址的映射替换在此步中完成的。

 

[优化程序]:编译器对程序编译的优化处理是在何时刻进行的...

 

三、汇编扫描

主要功能:将汇编程序编译生成二进制代码和重定位信息的目标文件?

 

四、连接程序

主要功能:可重定位的目标文件和相应的库文件链接生成可执行文件;

 

五、生成的二进制文件可以装入内存执行;

问题是,原程序中包含的变量在执行过程中都是存储在内存中的,在编译的时候怎么将变量的地址和执行时的内存地址联系起来的呢?

亦即符号名地址/名地址,符号名空间/名空间如何进行存储管理的;

 

存储器映射管理方式相关:

编译程序生成的相应地址为虚拟地址/逻辑地址/相对地址,而内存地址为相应的物理地址/绝对地址。

1.固定定位方式

即名地址/虚拟地址和实际内存地址使用时一致;

--单板机、嵌入式系统的常用方式;

 

2.静态重定位方式

--虚拟地址/逻辑地址可以从零地址开始计算,在倒入内存中时,所有的地址再根据内存的基起始地址进行重新计算;

 

3.动态重定位方式

--实时计算方式,将基地址和偏移地址实时计算成内存地址;

优点:实时计算内存地址,在程序运行过程中,可以从内存中载入载出;

需要增加额外资源,如寄存器:MR/BR/VR MR=BR VR,根据基地址和虚拟地址得到相应的物理地址;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值