作为一个更具体的问题汇编-为什么使伊萨知道存在的“堆栈”的概念?-堆栈溢出和建议的@xiver77,有一个专用的堆栈指针寄存器和指令的每个ISA的好处是什么,如x86和ARM?
egdjgwm81#
在指令编码(如ARM Thumb)中,它为指针节省寄存器号上的位。在体系结构中,这意味着异常/中断语义可以将FLAGS和返回地址之类的东西保存到内存中,而不需要专门的寄存器。(或者可以异步地重写的通用寄存器。)另一种处理方式是通过寄存器组,例如切换到寄存器的特殊组用于异常处理,并且可能将一些值放入其中的一些寄存器中,以避免扰乱被中断代码的状态。但是,对于中断较低优先级处理程序的较高优先级中断,这将不起作用。MIPS不做这两件事;伊萨中没有任何东西将任何寄存器号隐式地用作堆栈指针,甚至其异常/中断处理也没有。
1条答案
按热度按时间egdjgwm81#
在指令编码(如ARM Thumb)中,它为指针节省寄存器号上的位。
在体系结构中,这意味着异常/中断语义可以将FLAGS和返回地址之类的东西保存到内存中,而不需要专门的寄存器。(或者可以异步地重写的通用寄存器。)另一种处理方式是通过寄存器组,例如切换到寄存器的特殊组用于异常处理,并且可能将一些值放入其中的一些寄存器中,以避免扰乱被中断代码的状态。但是,对于中断较低优先级处理程序的较高优先级中断,这将不起作用。
MIPS不做这两件事;伊萨中没有任何东西将任何寄存器号隐式地用作堆栈指针,甚至其异常/中断处理也没有。