【发布时间】:2011-09-02 06:48:28
【问题描述】:
在 Windows 中,当在 Assembly 中编程时——例如,在 Visual Studio 中的 .cpp 文件中的内联汇编——开发环境可以保护我免于自己犯的愚蠢错误。如果我在子程序退出时破坏了 ESP 寄存器,它会让我知道发生了特定的事情,但它仍然是阳光明媚的。当我不注意并且让我的代码写入无效的内存位置时,唯一崩溃的是我自己的程序,我可以在几秒钟后立即返回编辑。在 DOS 中,这些错误总是需要重新启动。
我知道这在很大程度上是由于 Windows 具有与 DOS 不同的内存模型(虚拟/保护模式与实模式),这就是为什么容易崩溃的 Windows 程序在大多数情况下很少会造成超出其自己的执行领域。
但我仍然想知道过去或现在是否曾经存在过一个 DOS 实用程序,它充当正在进行中的可执行文件的一种安全网,从而减少了整个 DOS 环境的机会(阅读:计算机本身,或者至少是运行 DOS 的模拟器)不会因为低级开发人员错误而冻结?
【问题讨论】:
-
我一开始就不会在 DOS 上做 ASM 并解决了问题:P,DOS 只是 QDOS 的快速改造,它并不需要很多这些东西。有一件事可以肯定的是,如果你搞砸了必须重新启动整个操作系统,那么一段时间后你一定会少犯错误。