SHマイコンのC言語組込み関数set_imask中身は?

SHでC言語で作る場合の割り込み禁止は、set_imask関数 です。最近の他ルネサスマイコンでの _EI( )、_DI( ) のように気軽に呼出してよいのでしょうか? アセンブラならシステムレジスタの 割込マスクBit 3つを立てるだけなので、一行で済むはずですが、、、

set_imask() のアセンブラ展開は、

むろん set_imask() はライブラリではなく、直接アセンブラにインライン展開されています。SHは、システムレジスタを直接更新しないポリシーみたいですね。

SH-2A、SH2A-FPUユーザーズマニュアル ソフトウェア編」によりますと、

命令ステート数
システムレジスタ読出し2
20bitデータ転送1
マスク値(レジスタ同士の)の加算1
システムレジスタ書込み 3
7

所要時間は、7ステート × クロック分解能 。100MHzだと、0.007usec。アプリケーションにもよりますが、負荷を気にして使う必要はなさそうですね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です