【发布时间】:2015-07-08 14:17:04
【问题描述】:
我无法理解这个问题。
"内存栈顶的内容是5320。栈指针(SP)的内容是3560。一个两字的调用子程序指令位于内存中的地址1120,后跟地址字段6720的地址1121.PC、SP和栈顶的内容是什么:
- 从内存中取出调用指令之前
- 调用指令执行后。
- 从子程序返回后"
1.在获取调用指令之前,PC 将调用指令的地址保存在内存中,即1120。当时SP = 3560,M[SP] = 5320。
2.调用指令解码执行后,PC递增(PC=PC+1),等于返回地址1121,存放在栈顶。假设,堆栈指针每 push 减 1 (SP = SP - 1),每 pop 加 1 (SP = SP + 1)。 因此,SP 值为 3560 - 1 = 3559 和 M[3559] = 1121(返回地址)。
3.子程序执行完毕后,返回地址传送给PC(PC = M[SP]),SP递增(pop)(SP = SP + 1) 所以,现在 PC = 1121 和 SP = 3559 + 1 = 3560 ,并且 M[SP] = M[3560] = 5320。
到目前为止,这就是我所知道的,作为一个初学者。
我的问题是:
1.我做的对吗?
2。如果不是,请解释原因。
3.如果是,那么在计算中没有任何作用的其他值的意义是什么?
【问题讨论】:
标签: architecture stack subroutine