CCR(Condition Code Register:条件コードレジスタ)の役割:Q&Aで学ぶマイコン講座(66)(3/4 ページ)
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、超初級者の方からよく質問される「CCR(Condition Code Register: 条件コードレジスタ)の役割」についてです。
Arm Cortex-Mプロセッサを搭載したSTM32ファミリーの場合
STの汎用32ビットマイコンSTM32ファミリー*3)は、Arm Cortex-Mプロセッサを搭載しています。Cortex-MプロセッサのCCRは、STM8ファミリーとは異なる構成になっています。
図3に、Arm Cortex-M4を搭載したSTM32マイコンのCCR相当のレジスタを示します。
図3:STM32ファミリー(Arm Cortex-M4搭載)のCCR相当のレジスタ[クリックで拡大]
STM32 Cortex-M4 MCUs and MPUs programming manualから抜粋
*3)STM32ファミリー
STM32ファミリーは、「専用プログラムステータスレジスタ」と呼ばれるプログラムの実行状態を示すレジスタを持っています。一般的なCCRの機能に加えて、特殊命令の実行結果や割り込みの状態を知ることができます。
専用プログラムステータスレジスタは、以下3つのカテゴリーに分けられます。
- アプリケーションPSR(APSR)
- 割り込みPSR(IPSR)
- 実行PSR(EPSR)
これらは、個別のレジスタとして、または3つ全ての組み合わせとして、アクセスできます。STM8ファミリーのCCRと異なり、ユーザーが直接アクセス可能です。
CCRに相当するのは、アプリケーションPSRです。各ビットは以下の機能を持っています。
(1)N(ネガティブ):演算結果が負または、より小さい場合にセットされます。
(2)Z(ゼロ):演算結果が0の場合にセットされます。
(3)C(キャリー):演算結果にキャリーまたはボローが発生した場合にセットされます。
(4)V(オーバーフロー):オーバーフローが発生した場合にセットされます。
(5)Q(スティッキ飽和):飽和演算で演算中に飽和が発生した場合にセットされます。飽和とは、演算結果がオーバーフローしたら、上限値または下限値に補正することです。
STM8ファミリーとの違いはQ(スティッキ飽和)だけで、他のビットは同じ機能です。
Copyright © ITmedia, Inc. All Rights Reserved.