LC-3 中的错误处理?

Error Handling in LC-3?

我的评论中有这个问题 sheet 我似乎无法得到,但与其问你答案,我更想了解这些具体概念之间的区别。

作为参考,问题是一条 LC-3 指令 ADD R1,R2, #45 产生错误。它会在a处被抓住。组装时间 B. link时间c。 运行时间d。编译时间。与其只是找出答案,不如想知道它们之间的区别是什么,以及它们在错误处理方面有何不同?

以C语言为例创建可执行程序的4个步骤预处理、编译、汇编、Linking

编译时间

这些通常很常见,是由编译器无法处理的格式错误的用户程序引起的,诸如忘记分号之类的事情会导致编译器错误。

集合时间

assembler 出了点问题。这包括如上所述错误地使用指令,未定义标签而是在指令中使用它等。

Link时间

作为形成可执行文件的 C 编译过程的一部分,assemble 步骤生成的许多目标文件被链接在一起。在 C 编程中,您可以通过 extern 关键字指定某些符号是在外部定义的,其他诸如函数原型之类的东西会告诉编译器函数在某处定义。

链接器将解析那些 variables/functions 所在的位置。如果您还没有声明 function/variable 并且某些东西引用了它,那么您将得到一个未定义的引用错误。如果某项被多次定义,则相同。

运行时间

您的程序在 运行 期间发生错误,例如访问空指针或除以零。