検索
連載

CCR(Condition Code Register:条件コードレジスタ)の役割Q&Aで学ぶマイコン講座(66)(3/4 ページ)

マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、超初級者の方からよく質問される「CCR(Condition Code Register: 条件コードレジスタ)の役割」についてです。

Share
Tweet
LINE
Hatena

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.

ページトップに戻る