いつもお世話になっております。
72855を採用しております。
FAQ1004533にて、V850ファミリの動作について記載がありましたが
SH7280シリーズについて同様の確認をしたく問合せさせて頂きます。
ビット・アクセス命令はリード・モディファイ・ライトの動作となるのでしょうか?
また、その実行処理中に割込みは入るのでしょうか?
Tk_naraさん
SH-2A、SH2A-FPUユーザーズマニュアル ソフトウェア編にビットアクセス命令実行中は割り込みが入りませんと書いてありますね。
(仮に命令実行中に割り込みが入って、実行中の命令を破棄されたとしてても、もう一度命令を先頭が実行するからリードしてビット操作してライトバックするだけなので問題なかったりしますけどねー。)
Kirinさん、こんにちは。NoMaYです。今回は(汎用レジスタに対するものでは無くてメモリ/内蔵周辺機能レジスタに対するものでしょうから)、ビットアクセス命令(ビット操作命令)って、以下の命令のことになるのではないですか?BCLR.B #imm3,@(disp12,Rn)BSET.B #imm3,@(disp12,Rn)BST.B #imm3,@(disp12,Rn)でも、パイプライン動作は以下と同じですね。アドレッシングモードが違うのがミソですかね。AND.B #imm,@(R0,GBR)OR.B #imm,@(R0,GBR)
NoMaYさん そーかもしれません。 コンパイラがどんなコードだすか分からないのですけれども、 いずれにしてもビット操作はマルチサイクルなので問題なしですね^^
ps最近NoMaYさんモデレータとしてあちこちのスレッドで大活躍ですね ♡
Kirinさん、こんにちは。NoMaYです。命令レベルではKirinさんのリプライにあったマニュアルの部分でエビデンスが得られましたね。この後は、以下の最初のHigetakaさんのリプライに繋がって行きますね。そして、tk_naraさんは必要な情報が得られたかなぁ?と、、、「ソフトから見たリード・モディファイ・ライトとは、ロード・演算・ストアのように複数命令に展開される動作となります。この場合、間に割り込みが入ると意図した動作にならない危険が潜んでいる事になります。」[追記]それから、以下のKirinさんのリプライへも繋がって行きますね、です。「アルゴリズムで演算が条件判断になどにより複数命令に分割されている場合は、割り込み内で変更した値が、割り込み復帰時に割り込み直前の値に戻ることはあると思います。その場合は自分で get_imask()/set_imask() で所望の処理を括らないと意図しない結果になるかと思います。」