1

16 ビットの 2 の補数ワードの順序付けられた配列に対して再帰的バイナリ検索を実行するサブルーチンを作成したいと考えています。ほとんどのコードができたので、あとは再帰的二分探索サブルーチンを書くだけです。助けはありますか?

int binSearch(int key, int &lo, int &hi) {
    if(hi < lo)
       return NOT_FOUND;  //RETURN with V = 1  
    int mid = (lo+hi) / 2;
    if(key == array[mid])
       return mid;
    else if(key < array[mid]) // go left
       return binSearch(key, lo, mid-1); // left
    else
       return binSearch(key, mid+1, hi); // right
    }

それをアセンブラに入れようとしています。

link        A6,#0
    movem.l        D1/A1-A2,-(sp) *this is right
    move.w        8(A6),D1   *key *this is right
    movea.l        10(A6),A1  *lo*this is right
    movea.l        14(A6),A2  *hi*this is right

    cmpa.l        A1,A2 *if hi>lo
    BHS            else
    move.l        A1,D1 *low D1
    add.l        A2,D1 *adds hi
    asr.l        #1,D1 * divide by 2
    andi.w        #$FFFE,D1 * I dont cras

h ここの部分 私には権利があります どうすればいいですか if(hi < lo)

4

0 に答える 0