SparcV8 stack
SparcV8 栈
永远不要忘了配置异常向量表,否则都不知道怎么死的。
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。