関数呼び出し前後において、レジスタの値が同一であることを保証するかどうかは、レジスタにより異なります。また、オプションにより特定の用途向けに使用するレジスタがあります。レジスタの使用規則を表 9.1に示します。
|
|
|
|
|
|
|
R0
|
保証する
|
スタックポインタ
|
スタックポインタ
|
-
|
-
|
-
|
R1
|
保証しない
|
引数1
|
戻り値1
|
-
|
-
|
-
|
R2
|
保証しない
|
引数2
|
戻り値2
|
-
|
-
|
-
|
R3
|
保証しない
|
引数3
|
戻り値3
|
-
|
-
|
-
|
R4
|
保証しない
|
引数4
|
戻り値4
|
-
|
-
|
-
|
R5
|
保証しない
|
-
|
(不定)
|
-
|
-
|
-
|
R6
|
保証する
|
-
|
(入口の値を保持)
|
-
|
-
|
-
|
R7
|
保証する
|
-
|
(入口の値を保持)
|
-
|
-
|
-
|
R8
|
保証する
|
-
|
(入口の値を保持)
|
-
|
○
|
-
|
R9
|
保証する
|
-
|
(入口の値を保持)
|
-
|
○
|
○
|
R10
|
保証する
|
-
|
(入口の値を保持)
|
○
|
○
|
○
|
R11
|
保証する
|
-
|
(入口の値を保持)
|
○
|
○
|
○
|
R12
|
保証する
|
-
|
(入口の値を保持)
|
○
|
○
|
○
|
R13
|
保証する
|
-
|
(入口の値を保持)
|
○
|
○
|
○
|
R14
|
保証しない
|
-
|
(不定)
|
-
|
-
|
-
|
R15
|
保証しない
|
構造体戻り値へのポインタ
|
(不定)
|
-
|
-
|
-
|
ISP
USP
|
スタックポインタの場合はR0と同じ。
そうでない場合は変化しません。*4
|
-
|
-
|
-
|
PC
|
-
|
プログラムカウンタ*5
|
-
|
-
|
-
|
PSW
|
保証しない
|
-
|
(不定)
|
-
|
-
|
-
|
FPSW
|
保証しない
|
-
|
(不定)
|
-
|
-
|
-
|
ACC
|
保証しない*6
|
-
|
(不定) *6
|
-
|
-
|
-
|
ACC0
ACC1
|
保証しない*6
|
-
|
(不定) *6
|
-
|
-
|
-
|
INTB
BPC
BPSW
FINTV
CPEN
|
-
|
変化しません*4
|
-
|
-
|
-
|
-
|
注 1. | R10〜R13の4本は、fint_registerオプションにより、一部または全部が「高速割り込み機能」に使われることがあります。「高速割り込み機能」に割り当てられたレジスタは、他の用途に使用することはできません。機能の詳細はオプションの説明を参照してください。 |
注 2. | R8〜R13の6本は、baseオプションにより、一部または全部が「ベースレジスタ機能」に使われることがあります。「ベースレジスタ機能」に割り当てられたレジスタは、他の用途に使用することはできません。機能の詳細はオプションの説明を参照してください。 |
注 3. | R9〜R13のうちの1本は、pidオプションにより「PID機能」に使われることがあります。「PID機能」に割り当てられたレジスタは、他の用途に使用することはできません。機能の詳細はオプションの説明を参照してください。 |
注 4. | 組み込み関数または#pragma inline_asmで、これらのレジスタを設定したり更新したりする場合を除きます。 |
注 5. | 関数の呼び出しに使用する命令の仕様に従います。関数の呼び出しには、BSR, JSR, BRA および JMPのいずれかの命令を用います。 |
注 6. | アキュムレータ(ACC, ACC0, ACC1)を更新する命令は、RXのソフトウェアマニュアルを参照してください。 |