Intel 253666-024US User Manual

Page 559

Advertising
background image

Vol. 2A 3-513

INSTRUCTION SET REFERENCE, A-M

JMP—Jump

THEN GP(new code segment selector); FI;

IF DPL > CPL

THEN #GP(segment selector); FI;

IF segment not present

THEN #NP(segment selector); FI;

tempEIP ← DEST(Offset);

IF OperandSize

=

16

THEN tempEIP ← tempEIP AND 0000FFFFH;

FI;
IF (IA32_EFER.LMA

=

0 or target mode

=

Compatibility mode) and

tempEIP outside code segment limit

THEN #GP(0); FI

IF tempEIP is non-canonical

THEN #GP(0); FI;

CS ← DEST[segment selector

]

; (* Segment descriptor information also loaded *)

CS(RPL) ← CPL

EIP ← tempEIP;

END;
NONCONFORMING-CODE-SEGMENT:

IF L-Bit

=

1 and D-BIT

=

1 and IA32_EFER.LMA

=

1

THEN GP(new code segment selector); FI;

IF (RPL > CPL) OR (DPL

CPL)

THEN #GP(code segment selector); FI;

IF segment not present

THEN #NP(segment selector); FI;

tempEIP ← DEST(Offset);

IF OperandSize

=

16

THEN tempEIP ← tempEIP AND 0000FFFFH; FI;

IF (IA32_EFER.LMA

=

0 OR target mode

=

Compatibility mode)

and tempEIP outside code segment limit

THEN #GP(0); FI

IF tempEIP is non-canonical THEN #GP(0); FI;
CS ← DEST[segment selector

]

; (* Segment descriptor information also loaded *)

CS(RPL) ← CPL;

EIP ← tempEIP;

END;

CALL-GATE:

IF call gate DPL < CPL

or call gate DPL < call gate segment-selector RPL

THEN #GP(call gate selector); FI;

IF call gate not present

THEN #NP(call gate selector); FI;

IF call gate code-segment selector is NULL

Advertising