SparcV8 stack

SparcV8 栈


SparcV8 stack

SparcV8 stack

永远不要忘了配置异常向量表,否则都不知道怎么死的。

1/ 当触发栈上溢出异常后,需要将CWP-1的register context保存到对应的栈帧中。由于约定%i6当作%fp使用,%o6当作%sp寄存器使用,在保存时根据%o6找到栈地址,然后将寄存器值写入到memory中。最后修改WIM用于指示各个windows可用。从而可以使用CWP-1的windows作为新函数的register context。

2/ 而当触发栈下溢出异常后,由于CWP的%o6是CWP+1的%i6,所以可以使用当前的%sp从memory恢复register context。

3/ Register context包括l0-l7和i0-i7。