我们有一个bootloader,我们有一个程序,程序断言0来注册RAX。之后使用DIV命令,自行分配寄存器RAX。
当然bootloader加载程序。
我知道任何汇编程序在此状态下都会出错,但该程序是原始二进制文件。因此,我们可以使用十六进制编辑器轻松编写此程序,因为该程序仅包含2条指令。
此状态会发生什么?
答案 0 :(得分:-3)
根据英特尔®64和IA-32架构软件开发人员手册:
只要指令试图划分a,处理器就会报告除零异常 有限非零操作数为0.除零异常的屏蔽响应是设置ZE标志并返回 用操作数符号的异或签名的无穷大。如果没有屏蔽除零除外, 设置ZE标志,调用软件异常处理程序,操作数保持不变。
所以,我们有标志。当我们尝试这样做时,这个标志将被修改,累加器寄存器的值将不会有机会。