EDA365电子论坛网

标题: arm的保护现场,不选择R4-R11? [打印本页]

作者: Maskman    时间: 2022-9-29 10:21
标题: arm的保护现场,不选择R4-R11?
为什么保护现场时,总是保护 R0-R3,R12,为什么不保护R4-R11
, U4 Y  [" P' P
作者: CRAZY_argentina    时间: 2022-9-29 11:14
可以看一看"ARM-thumb 过程调用标准"这个文档。讲的详细。
" A4 r) n1 C+ W* ?" O' l" i+ Q( X; B, k& K
使用寄存器 r0-r3 将参数值传送到函数,并将结果值传出。可以用 a1-a4 来引用 r0-r3。在子程序调用之间,可以将 r0-r3 用于任何用途。被调用函数在返回之前不必恢复 r0-r3。; _3 @/ ^5 e1 k/ }& \( `# L
如果调用函数需要再次使用 r0-r3 的内容,则它必须保留这些内容。  M6 u& b& w; i
- 使用寄存器 r4-r11 存放函数的局部变量。可以用 v1-v8 来引用这些寄存器,以使此用法透明。在 Thumb 状态下,在大多数指令中只有寄存器 r4-r7 可以用于局部变量。3 F( ]  R/ @/ k
如果被调用函数使用了这些寄存器,它在返回之前必须恢复这些寄存器的值。
6 b6 H% O0 a: `- 寄存器 r12 是内部调用暂时寄存器 ip。它在过程链接胶合代码中用于此角色。在过程调用之间,可以将它用于任何用途。被调用函数在返回之前不必恢复 r12。
作者: Crash    时间: 2022-9-29 11:23
ATPCS 是指定用于特殊用途的寄存器。: |. T4 @; b+ X' M
r0-r3是自变量/结果/暂时寄存器! z9 x" n3 X3 ~1 k; f( w9 _, D
r12是内部过程调用暂时寄存器。不要用错了!




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2