付録C  DSP機能


DSP機能をサポートしたMCUを使用する場合は,ACCレジスタ(アキュムレータ)の扱いについて注意が必要です。具体的には,ACCレジスタを更新するDSP機能命令(下記)を使用する場合は,後述について留意してください。

- RXv1/RXv2アーキテクチャ共通命令
MACHI, MACLO, MULHI, MULLO, RACW, MVTACHI, MVTACLO


- RXv2アーキテクチャ命令
EMACA, EMSBA, EMULA, MACLH, MSBHI, MSBLH, MSBLO, MULLH, MVTACGU, RACL,RDACL, RDACW


なお,コンパイラがこれらの命令を生成することはありません。また,アセンブラで-chkdspオプションを指定すると,DSP機能命令の記述をWarningとして検出します。

C.1 タスクおよびタスク例外処理ルーチンでDSP機能命令を使用する場合

システム情報(system)タスク・コンテキスト・レジスタ(context)に,“ACC”を含む設定を行ってください。これにより,ACCレジスタはタスク毎に独立に管理されるようになります。

C.2 割り込みハンドラでのACCレジスタの保証

アプリケーション内に前述のDSP機能命令を使用するタスクおよび割り込みハンドラがひとつでもある場合は,すべての割り込みハンドラがACCレジスタを保証する必要があります。その方法として,以下の2つがあります。また,表20−9も参照してください。

1 ) コンパイラ・オプション“-save_acc”を使用する。

2 ) すべての割り込みハンドラの定義(可変ベクタ情報(interrupt_vector[]),および固定ベクタ/例外ベクタ情報(interrupt_fvector[]))際に,pragma_switchに“ACC”を指定する。