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)