怎么把 proc文件与C++文件联编成可执行文件?

来源:百度知道 编辑:UC知道 时间:2024/06/16 16:33:54

8月23日 16:19 .com文件就是只含一个代码段的指令程序
.exe文件可包含多个程序段,如:代码段,数据段,堆栈段等

.com文件只能作一些简单的DOS指令操作
.exe文件应用广泛,可作为各类程序的程序文件

.com文件大小不能超过64K
.exe文件大小没有限制

com文件. com文件是内存中数据的镜像, 在装载过程中操作系统将分配一个64Kb的段(segment)
给它, 然后将PSP(程序段前缀, program segment prefix)结构的256个字节填充完毕,
再将文件读入0x100偏移地址处, 再设置所有的段寄存器到该段, 即SS DS ES与CS同.
在设置IP=0x100, 然后将控制权交给com文件.
一个com文件一般是由一条跳转指令(jmp xxyy, 指令码 E9 yy xx) 或是CALL指令(E8)开始的.
由于段的限制, com文件实际大小不超过 64K-256=65280个字节.

exe文件. exe文件是有格式的, 通常的exe文件都是以MZ或ZM为文件开头的.
最开始的0x20个字节是文件头的结构, 包括文件大小, 运行所需的空间, 程序开始指针(CS:IP),
重载定位表(Relocation Table)项数, 等等信息, 根据文件头的不同,
后续的内容可能会有所变化. 并且根据exe格式是MZ(DOS下的), NE(windows 3.1的),
LE(vxd等驱动程序)或PE(Win32)的不同, 文件结构又不相同.
总的来说, exe文件是以page为单位的, 一个page为16字节, 载入内存中的时候
将对exe进行重载定位, 一个exe程序的数据段和程序段是分开的, 并且可以有多个
不同的数据段, 程序段和堆栈段, 程序占有的内存空间也超过64K的限制.

该回答在8月23日 16:21由回答者修改过

8月23日 16:19 .com文件就是只含一个代码段的指令程序
.exe文件可包含多个程序段,如: