レジスタ
ここでは、H8/300H シリーズのレジスタの構成と使用法について説明する
レジスタのビット長と使用ビットに対する表記
32ビットの汎用レジスタ8本のどのレジスタの、どのビットをどう指定するか
| ビット長 | コード中での表記 | 使用ビット |
|---|---|---|
| 32ビット | ern |
32ビット全体 |
| 16ビット | en |
32ビット中の上位16ビット |
| 16ビット | rn |
32ビット中の下位16ビット |
| 8ビット | rnh |
下位16ビット中の上位8ビット |
| 8ビット | rnl |
下位16ビット中の下位8ビット |
n は 0 から 7 までのレジスタの番号で、er7 は push-pop 命令のためのスタックポインタとして使用するため、プログラム中では使用しない。
レジスタの上位16ビットを8ビットずつ分けてアクセスする表記(例:e0l)は存在しない
上図は汎用レジスタ1本の、重なっている様子を表現したもの。これが8本ある。
注意
e1 や er2 等、表記は多いが、実際のレジスタは8本しかなく、例えば er0 と r0h は同じレジスタの異なる大きさの範囲を示しているにすぎない。よって、e0 と r0 の組み合わせや r0l と r0h と e0 等は同時に使用出来るが、例えば e0 に値が入っているときに er0 に値を代入したとき、もとの e0 の値は失われる。