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.

RCL/RCR/ROL/ROR-—Rotate ( 続き )<br />

説明<br />

第 1 オペラン ド ( デステ ィ ネーシ ョ ン ・ オペラン ド ) のビッ ト を第 2 オペラン ド ( カウン<br />

ト・オペランド) に指定されたビ ッ ト 位置の数だけシ フ ト し ( 回転さ せ )、 結果をデス<br />

ティネーション ・ オペランドにストアする。 デスティネーション ・ オペランドには、 レ<br />

ジスタまたはメモリ ・ ロケーションを使用できる。 カウン ト ・ オペランドは、 即値また<br />

は CL レ ジス タの値が可能で、 符号なし整数である。 プロセ ッ サは、 最下位 5 ビッ トを<br />

除くカウント ・オペランドのすべてのビットをマスクして、 カウントを0 から 31 までの<br />

数に制限する。<br />

左に回転 (ROL) 命令お よ びキ ャ リ ー を通じ て左に回転 (RCL) 命令は、 すべての ビ ッ ト を<br />

最上位ビ ッ ト 位置の方向にシ フ ト す る が、 最上位ビ ッ ト だけ は最下位ビ ッ ト ・ ロ ケ ー<br />

シ ョ ン に回転 さ れる。 右に回転 (ROR) 命令お よ びキ ャ リ ー を通じ て右に回転 (RCR) 命令<br />

は、 すべての ビ ッ ト を最下位ビ ッ ト 位置の方向にシ フ ト するが、 最下位ビ ッ ト だけ は最<br />

上位ビ ッ ト ・ ロ ケ ー シ ョ ン に回転される。<br />

RCL 命令お よ び RCR 命令は、 回転の中に CF フラグを含める。 RCL 命令は、 CF フラグ<br />

を最下位ビッ トにシフトさせ、 最上位ビットをCF フラグにシフト させる。 RCR 命令は、<br />

CF フ ラ グを最上位ビ ッ ト にシ フ ト さ せ、 最下位ビ ッ ト を CF フラグにシフト させる。<br />

ROL 命令お よ び ROR 命令では、 CF フ ラ グの元の値は結果には含められないが、 CF フ<br />

ラグには 1 端から も う 1 端にシフ ト されたビ ッ ト のコ ピーが入る。<br />

OF フラグは、 1 ビ ッ ト の回転だけ に定義され、 その他のすべての場合は未定義である。<br />

左回転では、 OF フラグは、 ( 回転後の ) CF ビ ッ ト と 結果の最上位ビ ッ ト と の排他的論理<br />

和に設定される。 右回転では、 OF フラグは、 結果の最上位2ビッ ト の排他的論理和に設<br />

定される。<br />

操作<br />

SIZE ← OperandSize<br />

CASE (determine count) OF<br />

SIZE = 8: tempCOUNT ← (COUNT AND 1FH) MOD 9;<br />

SIZE = 16: tempCOUNT ← (COUNT AND 1FH) MOD 17;<br />

SIZE = 32: tempCOUNT ← COUNT AND 1FH;<br />

ESAC;<br />

(* ROL instruction operation *)<br />

WHILE (tempCOUNT ≠ 0)<br />

DO<br />

tempCF ← MSB(DEST);<br />

DEST ← (DEST ∗ 2) + tempCF;<br />

tempCOUNT ← tempCOUNT - 1;<br />

OD;<br />

ELIHW;<br />

CF ← tempCF;<br />

IF COUNT = 1<br />

THEN OF ← MSB(DEST) XOR CF;<br />

ELSE OF is undefined;<br />

FI;<br />

(* ROR instruction operation *)<br />

WHILE (tempCOUNT ≠ 0)<br />

DO<br />

tempCF ← LSB(SRC);<br />

DEST ← (DEST / 2) + (tempCF ∗ 2 SIZE );<br />

tempCOUNT ← tempCOUNT - 1;<br />

OD;<br />

3:704 第 3 巻 : IA-32 基本命令リファレンス

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!