这是一个有趣的问题,而且总是答案是误导性的.
一个真正的DOS COM文件没有标题,并且必须适合单个内存段,因为它没有重定位信息,DOS必须将文件放在需要的地方,因此唯一真正的兼容方式(使用x86)是使用8086兼容组件.编辑:为了澄清上述情况,这是因为8086没有内存页面.
您当然可以在286/386操作数中编译,因为一旦程序运行,DOS中就没有执行运行时阻止您并且说"不,你不能这样做,它是386指令".
有趣的是,这是COM文件在Windows7 x32中或在Windows7 x64中不常用的原因的一部分.
由于DOS工作的方式,当你执行.com文件时,command.com被卸载,然后重新加载,所以基本上你的.com文件可以访问系统的所有内存,理论上使用DOS内存扩展器,如Phar lap的DOS/4GW想到了CWSDPMI.
长话短说; 您可以使用当前系统可以支持的任何类型的命令,但您应该只使用16位x86兼容命令.
如果上面的声音听起来像PITA,那是因为它是,我记得:)这也是为什么.EXE格式非常流行的原因.
一个真正的COM(我不会进入实际上是EXE的COM等)只是意味着它是一个简单的DOS可执行文件.无论支持哪种指令集都可用.我过去常常在8088上通过i486进行DOS编程(COM和EXE),无论在该模式下哪些指令合法,你都可以使用.例如,当我的目标是"16位"(技术上应该称为"实模式")DOS时,我经常使用32位字符串指令和立即推送.
| 归档时间: |
|
| 查看次数: |
1842 次 |
| 最近记录: |