Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly ARM中银行注册的概念_Assembly_Arm - Fatal编程技术网

Assembly ARM中银行注册的概念

Assembly ARM中银行注册的概念,assembly,arm,Assembly,Arm,我刚接触ARM,对银行注册的概念有点困惑 除了用户模式外,每个模式都有自己的一组存储寄存器。我的困惑是 每个模式都有来自r0-r15+倾斜寄存器的寄存器。如果是这样。然后FIQ模式有最多的寄存器可用,总共23个寄存器 另外,据说在总共37个寄存器中,有20个寄存器在不同的时间对程序隐藏。这是什么意思???我总是觉得这个数字很有用: 谢谢@auselen。你能确认一下这句话吗?每个模式都有r0-r15+倾斜寄存器的寄存器,FIQ模式有它可见的最高数量的寄存器。也许有帮助。例如,Linux FIQ寄

我刚接触ARM,对银行注册的概念有点困惑 除了用户模式外,每个模式都有自己的一组存储寄存器。我的困惑是 每个模式都有来自r0-r15+倾斜寄存器的寄存器。如果是这样。然后FIQ模式有最多的寄存器可用,总共23个寄存器


另外,据说在总共37个寄存器中,有20个寄存器在不同的时间对程序隐藏。这是什么意思???

我总是觉得这个数字很有用:


谢谢@auselen。你能确认一下这句话吗?每个模式都有r0-r15+倾斜寄存器的寄存器,FIQ模式有它可见的最高数量的寄存器。也许有帮助。例如,Linux FIQ寄存器源使用一个内存位置加载所有存储的FIQ寄存器。所有已存储/未存储的寄存器在保存/未擦除的每种模式下都存在;只有r0-r15可以访问。@artless noise,我在采访中被问到哪种模式在ARM中有最多的寄存器,采访者自己告诉FIQ模式有23个寄存器可用,FIQ模式必须始终保持此寄存器列表,当从中断返回时,它会将存储的寄存器恢复为正常寄存器。@amitsightomar这是错误的。保存所有存储的寄存器。您只能在FIQ模式下访问r8-r12的FIQ版本。您必须切换模式才能获得其他版本。这与模式堆栈指针相同。通常,模式lr由异常设置。与银行相反,例外lr在概念上类似于另一种含义。对于硬件的人来说,他们会称之为banked;当您返回到用户模式时,用户lr状态将保留。例如,有7个独立的堆栈指针寄存器。但是作为一个程序员,根据你所处的模式,你一次只能使用一个。有30个通用寄存器,但一次只能访问16个。当你发现这一切时,你应该阅读上面的图表,它完整地描述了答案。根据您所处的模式,您可以访问寄存器r0-r15的一列,其中一些是用户/系统模式,有时使用其他模式。可能是寄存器r0-r15的重复。对银行业的lr和cpsr有更多的了解。