CPUFastSet, CPUSet
32バイト単位でのメモリコピー・メモリ埋めをおこないます。
メモリコピーは LDMIA/STMIA [Rb]!,r2-r9
を繰り返し行うことでコピーをします。
メモリ埋めは STMIA [Rb]!,r2-r9
を繰り返した後でLDRを1回します。
処理サイズはワード単位によって指定されています。つまり処理サイズのバイト数を4で割った値です。
GBAの場合、処理サイズは8ワード単位、つまりバイト数が32の倍数であることが望ましいです。そうでない場合は強制的に処理サイズを切り上げします。
引数:
r0: ソースアドレス
r1: ターゲットアドレス
r2: サイズ/モード
Bit0-20: 処理サイズ(ワード単位)
Bit24: モード(0=Copy, 1=アドレスr0に格納された値でFill)
戻り値: なし
2または4バイト単位でのメモリコピー・メモリ埋めをおこないます。
メモリコピーはLDMIA/STMIA [Rb]!,r3
または LDRH/STRH r3,[r0,r5]
を繰り返すことで行われています。
メモリ埋めはSTMIA [Rb]!,r3
か STRH r3,[r0,r5]
を繰り返した後に LDMIA
か LDRH
を行うことでメモリ埋めをおこないます。
処理サイズのバイト長は4バイト(32bitモード)か2バイト(16bitモード)の倍数である必要があります。
r2の処理サイズは32bitモードならワード単位、16bitモードならハーフワード単位であることに注意してください。
引数:
r0: ソースアドレス
r1: ターゲットアドレス
r2: サイズ/モード/処理単位
Bit0-20: 処理サイズ(ワード/ハーフワード単位)
Bit24: モード(0=Copy, 1=アドレスr0に格納された値でFill)
Bit26: 処理単位(0=16bit, 1=32bit)
戻り値: なし
CPUFastSetもCPUSetもコピー元、コピー先のどちらかがBIOS領域に到達すると特に通知せずに終了します。