16.02.2013 Aufrufe

24531904_j

24531904_j

24531904_j

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

extr ─ 抽出 (Extract)<br />

書式 : (qp) extrr 1 = r 3 , pos 6 , len 6 signed_form I11<br />

(qp) extr.ur 1 = r 3 , pos 6 , len 6 unsigned_form I11<br />

説明 : GR r3 か ら フ ィ ー ル ド が抽出 さ れ、 ゼ ロ拡張 ま たは符号拡張されて GR r1 に格納される。<br />

抽出 さ れる フ ィ ー ル ド は、 第 2 オペラ ン ド で与え ら れる ビ ッ ト 位置か ら 始ま り 、 左方向<br />

に len6 のビット数のサイズをもつ。 フィールドの開始ビット位置は即値pos6 で指定され<br />

る。 抽出されたフ ィ ール ド は、 signed_form では符号拡張 さ れ、 unsigned_form ではゼロ<br />

拡張される。 符号は、 抽出されたフィ ールドの最上位ビッ ト から取られる。 指定された<br />

フィールドがGR r3 の最上位ビッ ト を超える場合は、 符号は GR r3 の最上位ビ ッ ト と な<br />

る。 即値 len6 には、 範囲 0 ~ 63 内の任意の値を使用でき、 命令内では len6 - 1 としてエ<br />

ンコード される。 即値pos6 は、 範囲 1 ~ 64 内の任意の値を使用でき る。<br />

extr r1 = r3 , 7, 50 の操作の図解を図 2-7 に示す。<br />

図 2-7. 抽出の例<br />

操作 : if (PR[qp]) {<br />

check_target_register(r 1 );<br />

}<br />

GR r 3 :<br />

GR r 1 :<br />

tmp_len = len 6 ;<br />

割り込み : 無効操作フ ォ ル ト<br />

63<br />

63<br />

sign<br />

if (pos 6 + tmp_len u> 64)<br />

tmp_len = 64 - pos 6 ;<br />

if (unsigned_form)<br />

GR[r 1 ] = zero_ext(shift_right_unsigned(GR[r3], pos6), tmp_len);<br />

else // signed_form<br />

GR[r 1 ] = sign_ext(shift_right_unsigned(GR[r3], pos6), tmp_len);<br />

GR[r 1 ].nat = GR[r 3 ].nat;<br />

56 7 0<br />

49 0<br />

3:48 第 3 巻 : 命令リファレンス<br />

extr

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!