我试图了解堆栈及其实现,但最困扰我的是“为什么堆栈成为微处理器中中断服务的 FILO 结构很重要?” 在我理解堆栈概念之前,我需要先了解什么。谁能给我一个全面的解释。谢谢
2 回答
FILO 很有用,因为它允许在访问堆栈内的数据之前对其进行重组。具体来说,FILO 允许事情被可靠地逆转。如果您遇到内部元素在外部元素之前返回的情况(这在递归中可能很常见),那么 FILO 是完美的。
http://www.i-programmer.info/babbages-bag/263-stacks.html?start=2对 FILO 范例的实用性有很好的解释。
至于中断,同样的效用是子程序会先调用中断。
实际上有几个原因可以使 FILO 对中断有用。http://www.eee.metu.edu.tr/~cb/e447/Chapter%204%20-%20v2.0.pdf介绍了这些概念。一个例子是当需要从程序中提取寄存器并以相反的顺序恢复到程序时。
本文有一个动画演示了 FILO 的确切实用程序:http: //users.ece.utexas.edu/~valvano/assmbly/stack.htm
调用中断时,它将当前内容+下一条指令地址存储在堆栈中。
假设您遇到一个嵌套中断(即中断中的中断),那么您将需要按顺序存储数据+遇到第一个中断时的第一个中断的下一个地址,在那里执行几条指令并再次遇到下一个中断,在这里您需要存储数据+第二个中断的地址。返回时,您将返回到从那里调用中断的最后一个地址,再次完成该中断您将返回到第一个中断(FILO)。
因此我们使用 FILO。