Intel ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS MANUAL VOLUME 1 REV 2.3 Manual page 1643

Hide thumbs Also See for ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS MANUAL VOLUME 1 REV 2.3:
Table of Contents

Advertisement

RET—Return from Procedure (Continued)
Operation
(* Near return *)
IF instruction = near return
THEN;
IF OperandSize = 32
FI;
IF instruction has immediate operand
THEN IF StackAddressSize=32
FI;
FI;
IF Itanium System Environment AND PSR.tb THEN IA_32_Exception(Debug);
FI;
(* Real-address mode or virtual-8086 mode *)
IF ((PE = 0) OR (PE = 1 AND VM = 1)) AND instruction = far return
THEN;
IF OperandSize = 32
FI;
IF instruction has immediate operand THEN SP  SP + (SRC AND FFFFH); FI;
IF Itanium System Environment AND PSR.tb THEN IA_32_Exception(Debug);
FI;
(* Protected mode, not virtual 8086 mode *)
IF (PE = 1 AND VM = 0) AND instruction = far RET
THEN
IF OperandSize = 32
Volume 4: Base IA-32 Instruction Reference
THEN
IF top 12 bytes of stack not within stack limits THEN #SS(0); FI;
EIP  Pop();
ELSE (* OperandSize = 16 *)
IF top 6 bytes of stack not within stack limits
THEN #SS(0)
FI;
tempEIP  Pop();
tempEIP  tempEIP AND 0000FFFFH;
IF tempEIP not within code segment limits THEN #GP(0); FI;
EIP  tempEIP;
THEN
ESP  ESP + SRC;
ELSE (* StackAddressSize=16 *)
SP  SP + SRC;
THEN
IF top 12 bytes of stack not within stack limits THEN #SS(0); FI;
EIP  Pop();
CS  Pop(); (* 32-bit pop, high-order 16-bits discarded *)
ELSE (* OperandSize = 16 *)
IF top 6 bytes of stack not within stack limits THEN #SS(0); FI;
tempEIP  Pop();
tempEIP  tempEIP AND 0000FFFFH;
IF tempEIP not within code segment limits THEN #GP(0); FI;
EIP  tempEIP;
CS  Pop(); (* 16-bit pop *)
THEN
4:341

Advertisement

Table of Contents
loading

This manual is also suitable for:

Itanium architecture 2.3

Table of Contents