arm - ARM银行注册会冲突吗?
问题描述
阅读ARM 通用中断控制器第 4.1.4 节,它有以下解释:
注册银行是指在同一地址提供多个注册副本。寄存器访问的属性决定了寄存器的哪个副本被寻址。
我有点困惑at the same address
。例如,如果R12 和R12_fiq 是同一个寄存器,处理器如何保证R12 中的原始数据在fiq 模式下不会被覆盖。有必要保证吗?
我在网上找了很久。但是没有用。所有相关的问题都对我没有帮助。
我认为 Benoit 在“注册登记簿是什么意思”中的回答是什么?是一种帮助,但我不确定。
提前致谢。
- - - - - - 更新 - - -
由于domen的回答, R8_usr 和 R8_fiq 是两个不同的寄存器。抱歉,我不知道如何投票给他。而且我还注意到,在 ensc 的回答中提到了“专用”一词,也许他知道它们是不同的。但由于我描述不佳,他没有强调这一点。
解决方案
“GIC”并R12
没有很多共同点。GIC 是一个控制器(由一些,但不是每个 ARM CPU 使用),可以通过内存地址访问。根据安全模式和/或 cpu 节点,相同的地址可以提供不同内部寄存器的视图。
R12
是一个 CPU 寄存器。由于效率原因(例如,为了避免在离开 FIQ 时恢复其先前的值),FIQ 模式有一个专用的高位寄存器组(r8
- r15
)。
堆栈指针 ( r13
) 和lr
( r14
) 也可以存储起来,以便例如 IRQ 模式可以拥有自己的堆栈或发出某些状态的信号lr
(例如堆栈对齐)。
推荐阅读
- python - try:/except: 尝试运行模块时在 Python 中返回语法错误
- php - If php variable is not like, open other webpage in same window
- javascript - 我如何解决在尝试安装 express.js 时导致的漏洞问题?
- ios - Why does my UIAlertController not appear until the second time I press it's tab?
- python - 如何获取python列表范围内项目的索引?
- python - Printing a 2d list with variable column lengths
- r - R不正确的显示形状文件
- python - 尝试读取 m4b 文件时诱变剂引发错误
- ios - 删除 Iphone Safari 上的 textarea 内阴影
- c# - 在 C# 中显示来自 JSON 的所有名称列表