[H8-ML(1091)] Re: BRAの"cc:0000"と" 条件:True"は、何を指してるんでしょうか?
From: 廣田 正孝 <mhirota@xxxxxxxxxxxxx>
Date: 2001年04月13日(金)02時24分30秒
  後藤さん、こんにちは。 すでに他の方が答えていますのでちょっと
補足として書きます。
 Bccはマニュアルにあるように「条件によって分岐する」命令です。
ですからccの部分は「どのような条件を利用するか」という「命令の詳細指示」
が入ると考えれば良いでしょう。
条件によって分岐するということは「ある条件が成立した時=True(真)となった
時」実行されるということです。
ですからbra命令は常時Trueですから「いつも条件が成立」=「無条件」
となり、無条件分岐命令です。brnは逆に「いかなる時も条件が成立しない」=
いつもfalse(偽)ですから「分岐できない分岐命令」となるわけです。

では、「条件」って何でしょう。 これがCCRの各ビットやビットの組み合わせ
です。マニュアルの「条件」のところのtrue,falseと並んでZ=1,Z=0,CvZ=1,...
などが書かれていますね。この記号とccrの記号が一致しますでしょう。

> もしかして、CCRの下位4bitは、演算結果のコンディション?として
> 割り当てられていて、

 ここまでは、その通りです。このビット条件を使って分岐します。条件分岐は
 
   演算する
    |
   CCRが変化する
    |
   CCR条件で分岐する <- この部分で使います。

> それを指してるんですかねえ。 
> 当然、B'0000はD'0でTrue,B'0001はD'1でFalseって事。
 これは違います。先ほど説明した様に、ccの4ビットは「分岐条件として
CCRのどのビットを使うか」を指示しているのです。CCRの4ビットのビット
パターンを示しているのではありません。
例:
  LDC.B #0,CCR   <- CCRオール0にします。
  MOV.B #0,R0L   <= R0Lに0を持ってきます、このときCCR=00000100
           となります。
  BNE LABEL1     <= CCRのZビット=1ですから条件は偽となり分岐
           しません。
           Zビットだけの条件で分岐するか否かが決まります。

さて、BRAやBRN命令は何のためにあるのでしょうか?
 BRAは近距離でしたらjmp @:24より効率的にプログラムメモリを使用できます。
 近距離でしたらJMP @:24に比べて実行時間も有利です。長距離では優位性は
 ありません。
  BRNは実行ステート数の多いNOP命令です。

では。
-- 
/******************************************************************************
Name: 廣田 正孝 "Masataka Hirota"
E-mail address:  mhirota@xxxxxxxxxxxxx
                 GCD03040@xxxxxxxxxxx
******************************************************************************/

スレッド概略
[1083(R)](起点)
 └[1087(U)]
   └[表示中]
     └[1092(1)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]