在Windows中,在汇编中编程时 - 比如在Visual Studio中的.cpp文件中进行内联汇编 - 开发环境可以保护我免受我自己的愚蠢错误的影响。如果我在子程序退出时破坏ESP寄存器,它会让我知道特定的事情发生了,但它仍然是阳光。当我没有注意并让我的代码写入无效的内存位置时,唯一崩溃的是我自己的程序,我可以在几秒钟之后立即返回编辑。在DOS中,这些错误总是需要重启。
我理解很多这是因为Windows拥有与DOS不同的内存模型(虚拟/保护模式与实模式),这就是为什么容易崩溃的Windows程序在很大程度上很少会造成超出他们的损害的原因自己的执行领土。
但我仍然想知道是否存在,过去或现在,DOS实用程序作为正在进行的可执行文件的一种安全网,可以减少整个DOS环境的机会(阅读:计算机本身,或至少运行DOS的模拟器)冻结了低级别的开发人员错误?
答案 0 :(得分:0)
你可以编写一个32位DOS Extender的程序,如DOS / 4G,DOS / 32等 - 它启动围绕DOS的保护模式包装。这至少会捕获无效指令和大多数内存错误,打印出异常处理程序报告并将您转储回DOS shell。
您仍然可以使用许多DOS / BIOS中断函数,但您实际上是在编写32位程序而不是16位程序。