2016-08-26 1 views
-2

У нас есть загрузчик, и у нас есть программа, программа утверждает 0 для регистрации RAX. После этого с помощью команды DIV делит регистр RAX на себя.деление на ноль в автономной программе

И, конечно, загрузчик загружает программу.

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

Что происходит с этим статусом?

+0

Возможно, проверьте документацию поставщика вашего процессора. – ABuckau

+0

Какой процессор? – 4386427

+0

Процессор Intel Core i5 и, конечно же, архитектура x86_64 –

ответ

-3

Согласно книге Intel® 64 и Руководство IA-32 архитектурах программного обеспечения разработчика:

Процессор сообщает исключение деления на ноль, когда инструкция пытается разделить конечное ненулевое операнд 0. замаскированный ответ для исключения «разделить на ноль» должен установить флаг ZE и вернуть бесконечность, подписанную с исключительным OR знака операндов. Если исключение «разделить на ноль» не замаскировано, установлен флаг ZE, вызывается программный обработчик исключений, а операнды остаются неизменными.


Итак, у нас есть флаг для этого. Когда мы попытаемся это сделать, этот флаг будет изменен, и значение регистра аккумулятора не будет иметь шансов.

+3

Это то, что происходит, когда команда с плавающей запятой делит на ноль. Это не относится к инструкции DIV. –

Смежные вопросы