24531904_j
24531904_j 24531904_j
LEAVE—High Level Procedure Exit オペコード 命令 説明 C9 LEAVE SP を BP に設定し、次に BP をポップする。 C9 LEAVE ESP を EBP に設定し、次に EBP をポップする。 説明 先行す る ENTER 命令で移行したプ ロ シ ー ジ ャ ( またはネスト されたプロシージャのグ ループ ) か ら の リ タ ー ン を実行す る。 こ の命令は、 EBP レジスタ内のフレーム ・ ポイン タをスタック ・ ポインタ ・ レジスタ (ESP) に コ ピ ー し、 プ ロ シ ー ジ ャ が ロ ー カ ル変数用 に使用していたスタ ッ ク空間を解放する。 次に、 古いフレーム ・ ポインタ (ENTER 命令 を発行するコール元プロシージャのフレーム ・ ポインタ ) がスタ ッ クから EBP レジスタ にポップされ、 コール元プロシージャのスタッ ク ・ フレームがリス トアされる。 通常は、 LEAVE 命令の後に RET 命令を実行して、 プログラム制御をコール元プロシー ジャに返し、 コール先プロシージャによってスタック上にプッシュされていた引数をす べて削除する。 操作 IF StackAddressSize = 32 THEN ESP ← EBP; ELSE (* StackAddressSize = 16*) SP ← BP; FI; IF OperandSize = 32 THEN EBP ← Pop(); ELSE (* OperandSize = 16*) BP ← Pop(); FI; 影響を受けるフラグ なし。 追加の Itanium ベース・システム環境例外 Itanium アーキテクチャ ・ レジスタ ・ フォルト Itanium アーキテクチャ ・ メモリ ・ フォル ト NaT レ ジ ス タ参照アボ ー ト 。 VHPT データ ・ フォル ト、 ネス ト された TLB フォルト、 データ TLB フォルト、 代替データTLB フォルト、 デー タ・ページ不在フォルト、 データNaT ページ参照アボー ト、 データ・キー・ ミス・フォルト、 データ・キー許可 フォルト、 データ・アクセス権フォルト、 データ・アクセ ス・ビット ・フォルト、 データ・ダーティ ・ビット ・フォ ルト。 保護モード例外 #SS(0) EBP レ ジ ス タ の指示先の ロ ケ ー シ ョ ンが現在のス タ ッ ク ・ セグ メ ン ト の範囲内にない場合。 3:630 第 3 巻 : IA-32 基本命令リファレンス
LEAVE—High Level Procedure Exit ( 続き ) 実アドレス・モード例外 #GP EBP レ ジ ス タ の指示先の ロ ケ ー シ ョ ンが 0 ~ 0FFFFH の実 効ア ド レ ス空間の範囲外の場合。 仮想 8086 モード例外 #GP(0) EBP レ ジ ス タ の指示先の ロ ケ ー シ ョ ンが 0 ~ 0FFFFH の実 効ア ド レ ス空間の範囲外の場合。 第 3 巻 : IA-32 基本命令リファレンス 3:631
- Seite 592 und 593: INC—Increment by 1 オペコー
- Seite 594 und 595: INS/INSB/INSW/INSD—Input from Por
- Seite 596 und 597: INS/INSB/INSW/INSD—Input from Por
- Seite 598 und 599: INT n/INTO/INT 3—Call to Interrup
- Seite 600 und 601: INT n/INTO/INT 3—Call to Interrup
- Seite 602 und 603: INT n/INTO/INT 3—Call to Interrup
- Seite 604 und 605: INT n/INTO/INT 3—Call to Interrup
- Seite 606 und 607: INT n/INTO/INT 3—Call to Interrup
- Seite 608 und 609: INT n/INTO/INT 3—Call to Interrup
- Seite 610 und 611: INVD—Invalidate Internal Caches (
- Seite 612 und 613: IRET/IRETD—Interrupt Return オ
- Seite 614 und 615: IRET/IRETD—Interrupt Return ( 続
- Seite 616 und 617: IRET/IRETD—Interrupt Return ( 続
- Seite 618 und 619: IRET/IRETD—Interrupt Return ( 続
- Seite 620 und 621: Jcc—Jump if Condition Is Met オ
- Seite 622 und 623: Jcc—Jump if Condition Is Met (
- Seite 624 und 625: JMP—Jump オペコード 命令
- Seite 626 und 627: JMP—Jump ( 続き ) 操作 IF nea
- Seite 628 und 629: JMP—Jump ( 続き ) END; TASK-GAT
- Seite 630 und 631: JMP—Jump ( 続き ) #PF ( フォ
- Seite 632 und 633: JMPE—Jump to Intel ® Itanium ®
- Seite 634 und 635: LAR—Load Access Rights Byte オ
- Seite 636 und 637: LAR—Load Access Rights Byte ( 続
- Seite 638 und 639: LDS/LES/LFS/LGS/LSS—Load Far Poin
- Seite 640 und 641: LEA—Load Effective Address オペ
- Seite 644 und 645: LES—Load Full Pointer 「LDS/LES/
- Seite 646 und 647: LGDT/LIDT—Load Global/Interrupt D
- Seite 648 und 649: LGS—Load Full Pointer 「LDS/LES/
- Seite 650 und 651: LLDT—Load Local Descriptor Table
- Seite 652 und 653: LMSW—Load Machine Status Word オ
- Seite 654 und 655: LOCK—Assert LOCK# Signal Prefix
- Seite 656 und 657: LODS/LODSB/LODSW/LODSD—Load Strin
- Seite 658 und 659: LODS/LODSB/LODSW/LODSD—Load Strin
- Seite 660 und 661: LOOP/LOOPcc—Loop According to ECX
- Seite 662 und 663: LSL—Load Segment Limit ( 続き )
- Seite 664 und 665: LSS—Load Full Pointer 「LDS/LES/
- Seite 666 und 667: LTR—Load Task Register ( 続き )
- Seite 668 und 669: MOV—Move ( 続き ) デスティ
- Seite 670 und 671: MOV—Move ( 続き ) #GP( セレ
- Seite 672 und 673: MOV—Move to/from Control Register
- Seite 674 und 675: MOV—Move to/from Debug Registers
- Seite 676 und 677: MOVS/MOVSB/MOVSW/MOVSD—Move Data
- Seite 678 und 679: MOVSX—Move with Sign-Extension
- Seite 680 und 681: MOVZX—Move with Zero-Extend オ
- Seite 682 und 683: MUL—Unsigned Multiplication of AL
- Seite 684 und 685: NEG—Two's Complement Negation オ
- Seite 686 und 687: NOP—No Operation オペコード
- Seite 688 und 689: NOT—One's Complement Negation (
- Seite 690 und 691: OR—Logical Inclusive OR ( 続き
LEAVE—High Level Procedure Exit<br />
オペコード 命令 説明<br />
C9 LEAVE SP を BP に設定し、次に BP をポップする。<br />
C9 LEAVE ESP を EBP に設定し、次に EBP をポップする。<br />
説明<br />
先行す る ENTER 命令で移行したプ ロ シ ー ジ ャ ( またはネスト されたプロシージャのグ<br />
ループ ) か ら の リ タ ー ン を実行す る。 こ の命令は、 EBP レジスタ内のフレーム ・ ポイン<br />
タをスタック ・ ポインタ ・ レジスタ (ESP) に コ ピ ー し、 プ ロ シ ー ジ ャ が ロ ー カ ル変数用<br />
に使用していたスタ ッ ク空間を解放する。 次に、 古いフレーム ・ ポインタ (ENTER 命令<br />
を発行するコール元プロシージャのフレーム ・ ポインタ ) がスタ ッ クから EBP レジスタ<br />
にポップされ、 コール元プロシージャのスタッ ク ・ フレームがリス トアされる。<br />
通常は、 LEAVE 命令の後に RET 命令を実行して、 プログラム制御をコール元プロシー<br />
ジャに返し、 コール先プロシージャによってスタック上にプッシュされていた引数をす<br />
べて削除する。<br />
操作<br />
IF StackAddressSize = 32<br />
THEN<br />
ESP ← EBP;<br />
ELSE (* StackAddressSize = 16*)<br />
SP ← BP;<br />
FI;<br />
IF OperandSize = 32<br />
THEN<br />
EBP ← Pop();<br />
ELSE (* OperandSize = 16*)<br />
BP ← Pop();<br />
FI;<br />
影響を受けるフラグ<br />
なし。<br />
追加の Itanium ベース・システム環境例外<br />
Itanium アーキテクチャ ・<br />
レジスタ ・ フォルト<br />
Itanium アーキテクチャ ・<br />
メモリ ・ フォル ト<br />
NaT レ ジ ス タ参照アボ ー ト 。<br />
VHPT データ ・ フォル ト、 ネス ト された TLB フォルト、<br />
データ TLB フォルト、 代替データTLB フォルト、 デー<br />
タ・ページ不在フォルト、 データNaT ページ参照アボー<br />
ト、 データ・キー・ ミス・フォルト、 データ・キー許可<br />
フォルト、 データ・アクセス権フォルト、 データ・アクセ<br />
ス・ビット ・フォルト、 データ・ダーティ ・ビット ・フォ<br />
ルト。<br />
保護モード例外<br />
#SS(0) EBP レ ジ ス タ の指示先の ロ ケ ー シ ョ ンが現在のス タ ッ ク ・<br />
セグ メ ン ト の範囲内にない場合。<br />
3:630 第 3 巻 : IA-32 基本命令リファレンス