首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SVC处理器: ARM皮层m处理器

SVC处理器: ARM皮层m处理器
EN

Stack Overflow用户
提问于 2016-09-30 02:34:10
回答 1查看 2.8K关注 0票数 0

互联网上没有足够的关于svc的信息。我了解了SVC处理程序是如何工作的,但问题是我不明白为什么它要将寄存器R0、R1、R2、R3和R12堆到堆栈中。除非它有目的,否则它不会存储在这些寄存器中的信息,这对处理器来说是非常重要的。

有谁建议如何学习手臂皮质M3?如何开始学习,这样就不会有像上面这样的基本事物出现任何混乱。先谢谢你

EN

回答 1

Stack Overflow用户

发布于 2016-09-30 05:56:45

这是因为每次调用一个函数时,ABI都会描述:

  • 寄存器r0-r3可以包含参数,并可用作划痕寄存器.这意味着不需要函数来保存它们(它们将被修改)
  • 其他寄存器需要由函数保存(即函数返回时需要恢复到以前的值)。

这对于r12也是一样的。

因此,如果SVC调用C函数处理程序,则寄存器r0-r3将被C函数破坏,而其他寄存器将被维护。在这种情况下,硬件会自动进行堆叠,这样我们就有保证(如果C函数是正确的),所有寄存器的值都与调用SVC之前相同。

注意,对于SVC,知道这些寄存器已损坏是可以接受的(因为我们知道何时调用SVC指令)。但其他的例外(如中断)也有相同的行为,对于这些例外,这是至关重要的,因为我们不知道它们何时发生。

关于一本书,我知道这本书,所以我可以建议它:

臂皮质的最终指南-M3,第二版第二版

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39782785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档