【发布时间】:2015-05-18 21:11:05
【问题描述】:
在程序中执行最后一条指令后会发生什么? 假设我有一个 16 字节的 RAM,并且一个程序适合该空间。
PC 持有当前要获取的指令的地址,所以在最后一条指令中,我们有类似 STOP 指令的东西吗?这个 STOP 指令实际上做了什么以及它是如何用硬件逻辑实现的? 谢谢。
【问题讨论】:
标签: assembly logic hardware computer-architecture
在程序中执行最后一条指令后会发生什么? 假设我有一个 16 字节的 RAM,并且一个程序适合该空间。
PC 持有当前要获取的指令的地址,所以在最后一条指令中,我们有类似 STOP 指令的东西吗?这个 STOP 指令实际上做了什么以及它是如何用硬件逻辑实现的? 谢谢。
【问题讨论】:
标签: assembly logic hardware computer-architecture
在没有操作系统 (OS) 之类的嵌入式系统中,程序永远不会终止。您必须在某处提供无限循环,并且您的程序只会在电源关闭时终止。
如果您有一个程序位于 RAM 中并且您忘记了进行无限循环,那么行为是未定义。 CPU 将尝试执行程序通过 RAM 中的垃圾,然后要么崩溃,要么执行垃圾,直到它的程序计数器回滚到地址空间的另一个有意义的区域并执行另一个子程序(或者甚至再次执行相同的程序,如果程序计数器通过整个地址空间计数)。
(我所说的不适用于具有睡眠模式的微控制器,但早在 80 年代,没有 CPU 具有睡眠模式,并且没有操作系统(或只有非常微不足道的操作系统)的系统很常见)
【讨论】:
大多数程序是由其他程序(例如,操作系统的一部分)启动的,因此它们的最后一条指令要么将控制权返回给调用者,要么发送一个信号表明它们已完成。
STOP 指令停止计算机(如关闭计算机);只有操作系统应该被允许执行这样的指令。事实上,可能是操作系统之外的东西试图执行这样的指令,就是我前面提到的那个“信号”。
【讨论】: