我的评论表上有这个问题我似乎无法得到,而不是问你答案,我宁愿学习这些具体概念之间的区别。
作为参考,问题是一个LC-3指令ADD R1,R2,#45产生错误。它将被捕获。装配时间b。链接时间c。运行时间d。编译时间。而不是仅仅找出想要知道的答案是什么,它们之间的差异是什么,它们在错误处理方面有何不同?
答案 0 :(得分:0)
以C编程语言为例,创建可执行程序的4个步骤:预处理,编译,汇编和链接。
这些通常是常见的,是由编译器无法处理的格式错误的用户程序引起的,例如忘记分号会导致编译器错误。
汇编程序出了问题。这包括如上所述错误地使用指令,不是定义LABEL,而是在指令等中使用它。
作为形成可执行文件的C编译过程的一部分,汇编步骤生成的许多目标文件被链接在一起。在C编程中,您可以指定某个符号是通过extern关键字在外部定义的,其他函数原型将告诉编译器某个函数是在某处定义的。
链接器将解析这些变量/函数的存在位置。如果你还没有声明一个函数/变量而某些东西引用它,那么你将得到一个未定义的引用错误。如果多次定义某些内容,则相同。
在运行程序时发生错误,例如访问指针为null或除以零。