16.02.2013 Aufrufe

24531904_j

24531904_j

24531904_j

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

unpack<br />

unpack ─ アンパック (Unpack)<br />

書式 : (qp) unpack1.h r 1 = r 2 , r 3 one_byte_form, high_form I2<br />

(qp) unpack2.h r 1 = r 2 , r 3 two_byte_form, high_form I2<br />

(qp) unpack4.h r 1 = r 2 , r 3 four_byte_form, high_form I2<br />

(qp) unpack1.l r 1 = r 2 , r 3 one_byte_form, low_form I2<br />

(qp) unpack2.l r 1 = r 2 , r 3 two_byte_form, low_form I2<br />

(qp) unpack4.l r 1 = r 2 , r 3 four_byte_form, low_form I2<br />

説明 : GR r 2 および r 3 の各デー タ要素がアンパ ッ ク さ れ、 結果が GR r 1 に格納される。<br />

high_form では、 各ソ ー ス ・ レ ジ ス タ の最上位要素が選択 さ れ、 それに対して low_form<br />

では、 各ソ ー ス ・ レ ジ ス タ の最下位要素が選択される。 要素は それぞれの ソ ー ス ・ レ ジ<br />

ス タ か ら 交互に選択 さ れる。<br />

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

check_target_register(r 1 );<br />

}<br />

if (one_byte_form) { // one-byte elements<br />

x[0] = GR[r 2 ]{7:0}; y[0] = GR[r 3 ]{7:0};<br />

x[1] = GR[r 2]{15:8}; y[1] = GR[r 3]{15:8};<br />

x[2] = GR[r 2 ]{23:16}; y[2] = GR[r 3 ]{23:16};<br />

x[3] = GR[r 2 ]{31:24}; y[3] = GR[r 3 ]{31:24};<br />

x[4] = GR[r 2]{39:32}; y[4] = GR[r 3]{39:32};<br />

x[5] = GR[r 2 ]{47:40}; y[5] = GR[r 3 ]{47:40};<br />

x[6] = GR[r 2 ]{55:48}; y[6] = GR[r 3 ]{55:48};<br />

x[7] = GR[r 2]{63:56}; y[7] = GR[r 3]{63:56};<br />

if (high_form)<br />

GR[r 1] = concatenate8( x[7], y[7], x[6], y[6],<br />

x[5], y[5], x[4], y[4]);<br />

else // low_form<br />

GR[r 1] = concatenate8( x[3], y[3], x[2], y[2],<br />

x[1], y[1], x[0], y[0]);<br />

} else if (two_byte_form) { // two-byte elements<br />

x[0] = GR[r 2]{15:0}; y[0] = GR[r 3]{15:0};<br />

x[1] = GR[r 2 ]{31:16}; y[1] = GR[r 3 ]{31:16};<br />

x[2] = GR[r 2 ]{47:32}; y[2] = GR[r 3 ]{47:32};<br />

x[3] = GR[r 2]{63:48}; y[3] = GR[r 3]{63:48};<br />

if (high_form)<br />

GR[r 1] = concatenate4(x[3], y[3], x[2], y[2]);<br />

else // low_form<br />

GR[r 1 ] = concatenate4(x[1], y[1], x[0], y[0]);<br />

} else { // four-byte elements<br />

x[0] = GR[r 2 ]{31:0}; y[0] = GR[r 3 ]{31:0};<br />

x[1] = GR[r 2 ]{63:32}; y[1] = GR[r 3 ]{63:32};<br />

if (high_form)<br />

GR[r1 ] = concatenate2(x[1], y[1]);<br />

else // low_form<br />

GR[r1 ] = concatenate2(x[0], y[0]);<br />

}<br />

GR[r1].nat = GR[r2].nat || GR[r3].nat; 第 3 巻 : 命令リファレンス 3:241

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!