BFMOV

ビットフィールド転送 【V3.00.00以降】

BFMOV

Bit Field MOVe


【構文】

BFMOV slsb, dlsb, width, src, dest

 

【オペレーション】

unsigned long tmp1, tmp2;

tmp1 = (0FFFFFFFFh >> (32-width)) << dlsb;

tmp2 = (src >> slsb) << dlsb;

dest = (tmp2 & tmp1) | (dest & ~tmp1);

 

【機能】

-

srcのビット位置slsbからwidthビット幅のデータをdestのビット位置dlsbへ転送します。destの残りのビットは保持されます。

-

slsbの範囲は0≦slsb≦31、dlsbの範囲は0≦dlsb≦31、widthの範囲は1≦width≦31です。

-

(slsb + width)>32の場合、および(dlsb + width)>32の場合、destは不定になります。

-

アセンブルオプション-isaを用いてRXv3以降の命令セットを指定した場合にアセンブルできます。

 

【命令フォーマット】

構文

処理

サイズ

対象

コードサイズ

(バイト)

slsb

dlsb

width

src

dest

BFMOV slsb, dlsb, width, src, dest

L

#IMM:5

#IMM:5

#IMM:5

Rs

Rd

5

 

【フラグ変化】

フラグは変化しません。

 

【記述例】

BFMOV  #5, #10, #3, R1, R2