在机器级别上,应用程序以二进制形式运行,然后在发生运行时错误时,如何呈现回错误代码?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在机器级别上,应用程序以二进制形式运行,然后在发生运行时错误时,如何呈现回错误代码?相关的知识,希望对你有一定的参考价值。

我正在运行以下程序:

#include <iostream>

using namespace std;

int main()
{

    while(1)
    {
        int a;
        cin >> a;
        cout << 9/a << endl; 
    }
    return 0;
}

一步一步的过程是

  1. 上面的代码被编译并连续转换成二进制格式。
  2. 二进制代码指令逐步执行。

所以当我提供输入:0时,我在控制台上收到以下信息:浮点异常:8

现在我的问题是当机器执行二进制指令时,如何在控制台上打印这个“浮点异常:8”。

答案

CPU的算术和逻辑单元(ALU)将包含错误标志的寄存器。除以零是其中之一。 ALU可能会在分母或扼流圈中发现零并设置标志。

无论哪种方式,在机器级别都会发生中断,这是我们(最终)将其视为异常。它(通过中断向量)捕获到一段二进制代码以进行异常处理,这是从中调用更高级别的异常处理的地方。

更多细节往往取决于体系结构,但可能导致管道无效。

以上是关于在机器级别上,应用程序以二进制形式运行,然后在发生运行时错误时,如何呈现回错误代码?的主要内容,如果未能解决你的问题,请参考以下文章

在 64 位机器上以 32 位运行 C# 应用程序

第一章:1.2:程序被其他程序翻译成不同的格式

初识 JavaScriptCore JIT

编程语言分类

数据库异常后的SQL超时

python介绍