2021:BKSC 分岐命令

 分岐命令は直前の演算の結果を判断してジャンプする。

1_000_xxxx 分岐命令 ←MSBは0にしたほうがいいかなあ?

 分岐条件の分類

・算術演算の結果はZ,N,V,Cのフラグを使用する。
・論理演算、ビット演算 算術演算に準じる。0010-0111までのZ,N,V,Cを組み合わせる条件は使わない。

0000 N - Never
0001 A - Always
0010 LEU - Less or Equal Unsigned
0011 GTU - Greater Than Unsigned
0100 LT - Less Than
0101 GE - Greater or Equal
0110 LE - Less or Equal
0111 GT 0 Greater Than
1000 CS/LTU - Carry Set / Less Than Unsigned
1001 CC/GEU - Carry Clear / Greater or Equal Unsigned
1010 VS - Overflow Set
1011 VC - Overflow Clear
1100 NEG - Negative
1101 POS - Positive
1110 E - Equal
1111 NE - Not Equal

・浮動小数点演算 IEEE754の場合
 演算結果の符号ビットと残りビットが非0かどうかで判断する。片方がNaNなど比較不能な場合はUnordered。
0000 N - Never
0001 A - Always
0010 FERR - Floating Error Occured
0011 FNE - Floating Not Equal
0100 FGE - Floating Greater or Equal
0101 FLE - Floating Less or Equal
0110 FNEG - Floating Negative
0111 FPOS - Floating Positive
1000 FGT - Floating Greater Than
1001 -
1010 FLT - Floating Less Than
1011 -
1100 FU - Floaring Unordered
1101 FO 0 Floating Orderred
1110 FE - Floating Equal
1111 -

 ロードストア命令なども結果の状態が必要ならばフラグZ,N,V,Cに反映して整数演算の条件を使用する。

 分岐命令の動作はオペランドによって決まる。

オペランドなし 次の命令をスキップ
即値(絶対アドレス) / 即値(相対アドレス) / 分岐先レジスタ これらはどれかひとつ
戻り番地レジスタ サブルーチンとして分岐する場合に指定、条件分岐命令の演算結果として与えれば、飛び先で保存するかどうか決められる。

→戻り番地を保存する汎用レジスタはあらかじめ幅を指定した宣言をしておくべきかどうか。汎用レジスタへの代入は例外なく汎用レジスタの使用宣言後とすれば、アドレス空間と同サイズ以上の幅を宣言しておかなければならない。しかし、色々なアドレス空間サイズの環境で動かすことを考えると決まったサイズでの宣言は非互換を招く。サイズは代入操作後に決まる、アドレス型というのはどうだろうか。ただしこの型はアドレスの保存用のみに使われ演算による加工は不可。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント