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.

IRET/IRETD—Interrupt Return ( 続き )<br />

操作<br />

IF(Itanium System Environment)<br />

THEN IA-32_Intercept(Inst,IRET);<br />

IF PE = 0<br />

THEN<br />

GOTO REAL-ADDRESS-MODE:;<br />

ELSE<br />

GOTO PROTECTED-MODE;<br />

FI;<br />

REAL-ADDRESS-MODE;<br />

IF OperandSize = 32<br />

THEN<br />

IF top 12 bytes of stack not within stack limits THEN #SS; FI;<br />

IF instruction pointer not within code segment limits THEN #GP(0); FI;<br />

EIP ← Pop();<br />

CS ← Pop(); (* 32-bit pop, high-order 16-bits discarded *)<br />

tempEFLAGS ← Pop();<br />

EFLAGS ← (tempEFLAGS AND 257FD5H) OR (EFLAGS AND 1A0000H);<br />

ELSE (* OperandSize = 16 *)<br />

IF top 6 bytes of stack are not within stack limits THEN #SS; FI;<br />

IF instruction pointer not within code segment limits THEN #GP(0); FI;<br />

EIP ← Pop();<br />

EIP ← EIP AND 0000FFFFH;<br />

CS ← Pop(); (* 16-bit pop *)<br />

EFLAGS[15:0] ← Pop();<br />

FI;<br />

END;<br />

PROTECTED-MODE:<br />

IF VM = 1 (* Virtual-8086 mode: PE=1, VM=1 *)<br />

THEN<br />

GOTO RETURN-FROM-VIRTUAL-8086-MODE; (* PE=1, VM=1 *)<br />

FI;<br />

IF NT = 1<br />

THEN<br />

GOTO TASK-RETURN;( *PE=1, VM=0, NT=1 *)<br />

FI;<br />

IF OperandSize=32<br />

THEN<br />

IF top 12 bytes of stack not within stack limits<br />

THEN #SS(0)<br />

FI;<br />

tempEIP ← Pop();<br />

tempCS ← Pop();<br />

tempEFLAGS ← Pop();<br />

ELSE (* OperandSize = 16 *)<br />

IF top 6 bytes of stack are not within stack limits<br />

THEN #SS(0);<br />

FI;<br />

tempEIP ← Pop();<br />

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!