汇编语言9---编译链接以及可执行文件

为什么需要分两步走,编译再链接(masm.exe / link.exe)

编译 masm asm --> obj
链接 link obj --> exe
假设有100w行代码,编译需要花费一段时间(比方说5min)。如果代码有错误,修改过后要重新进行这个5min的过程,如果错误不能一次性解决,就会花费很多个这样的5min。
可行的方法是:
把100w行代码拆分开来,再分别编译为.obj:
t1.asm — t1.obj
t2.asm — t2.obj

t1000.asm —t1000.obj
如果其中有个文件tx.asm出错了,我们只需要单独去修改tx的错误并重新编译tx,再对其进行链接就可以了。

可执行文件exe

系统可以运行exe文件,且需要为exe分配一段内存,系统是怎么知道要分配多大的内存给这个程序的?
因为exe文件中除了我们整个程序的代码,还包括了一些信息(描述信息):文件大小,程序入口。系统会根据这些描述信息对寄存器进行相关配置。

start伪指令
告诉编译器如何编译,在exe文件的描述信息中扮演者:
将我们设置的程序的入口地址 记录在exe文件的描述信息中
然后系统通过这个描述文件中的内容去设置cs:ip,当然还有其他内容,栈段和数据。

观测link后生成的.map文件,会发现里面已经描述了DATA,STACK,CODE三段的起始地址,终止地址以及长度。还指明了程序的入口地址:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值