据我了解,每个进程都有一个用户堆栈和内核堆栈。除此之外,ARM 架构中的每种模式都有一个堆栈。所以我想知道不同的堆栈和堆栈指针在 ARM 模式下如何工作?另外,何时会使用与进程关联的内核堆栈?
...何时会使用与进程关联的内核堆栈?
当您进行系统调用时。就像你想获取接口的 IP 地址一样,内核就像任何其他应用程序一样需要一些堆栈来准备你想要的东西。因此,当您切换到系统调用的内核端时,它有一个相应的堆栈。
不同的堆栈和堆栈指针在 ARM 模式下如何工作?
ARM 定义了几种硬件模式来处理系统的不同输入。例如,您可能会突然执行非法指令(或未定义的指令)。在这种情况下,CPU 中的执行会进入不同的模式,并且需要被告知如何继续。由于大多数时候您需要一些堆栈空间才能优雅地处理此问题,因此您需要为此模式提供单独的堆栈。 ARM 为您提供了不同的堆栈寄存器,因此当您切换到不同的硬件模式时,您不会覆盖以前的模式堆栈指针。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)