В Windows при программировании на ассемблере, скажем, встроенной сборке в файле .cpp в Visual Studio, среда разработки защищает меня от моих собственных глупых ошибок. Если я закрою регистр ESP при выходе из подпрограммы, он сообщит мне, что произошла конкретная вещь, но в остальном он останется солнечным светом. Когда я не обращаю внимания и записываю свой код в недопустимую область памяти, единственное, что вылетает, это моя собственная программа, которую я могу сразу же вернуться к редактированию всего через несколько секунд. В DOS эти ошибки всегда требуют перезагрузки.
Я понимаю, что во многом это связано с тем, что в Windows модель памяти отличается от используемой в DOS (виртуальный / защищенный режим по сравнению с реальным режимом), поэтому подверженные сбоям программы Windows, по большей части, редко наносят ущерб сверх их собственная территория исполнения.
Но я все еще задавался вопросом, существовала ли когда-либо, в прошлом или в настоящее время, утилита DOS, которая действует как своего рода защитная сетка для выполняемых исполняемых файлов, которая уменьшает шансы всей среды DOS (читай: сам компьютер или хотя бы эмулятор, работающий под DOS) от зависания из-за ошибки разработчика низкого уровня?