Утилиты "сети безопасности" (или хитрости) для разработки ASM под DOS? - PullRequest
1 голос
/ 02 сентября 2011

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

Я понимаю, что во многом это связано с тем, что в Windows модель памяти отличается от используемой в DOS (виртуальный / защищенный режим по сравнению с реальным режимом), поэтому подверженные сбоям программы Windows, по большей части, редко наносят ущерб сверх их собственная территория исполнения.

Но я все еще задавался вопросом, существовала ли когда-либо, в прошлом или в настоящее время, утилита DOS, которая действует как своего рода защитная сетка для выполняемых исполняемых файлов, которая уменьшает шансы всей среды DOS (читай: сам компьютер или хотя бы эмулятор, работающий под DOS) от зависания из-за ошибки разработчика низкого уровня?

1 Ответ

0 голосов
/ 02 сентября 2011

Вы могли бы написать свою программу с учетом 32-битного DOS Extender, такого как DOS / 4G, DOS / 32 и т. Д., Который запускает оболочку защищенного режима вокруг DOS. Это, по крайней мере, отлавливает неверные инструкции и большинство ошибок памяти, распечатывает отчет обработчика исключений и возвращает вас обратно в оболочку DOS.

Вы по-прежнему можете использовать многие функции прерывания DOS / BIOS, но вы фактически пишете 32-разрядную программу, а не 16-разрядную.

...