Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A, Instruction Set Reference, A-M
3-548 Vol. 2
INSTRUCTION SET REFERENCE, A-M
Operation
IF AddressSize = 32
THEN Count is ECX;
ELSE IF AddressSize
= 64 and REX.W used
THEN Count is RCX
FI;
ELSE AddressSize
= 16
THEN Count is CX;
FI;
Count ← Count – 1;
IF Instruction is not LOOP
THEN
IF (Instruction ← LOOPE) or (Instruction ← LOOPZ)
THEN IF (ZF
= 1) and (Count ≠ 0)
THEN BranchCond ← 1;
ELSE BranchCond ← 0;
FI;
ELSE (Instruction
= LOOPNE) or (Instruction = LOOPNZ)
IF (ZF
= 0 ) and (Count ≠ 0)
THEN BranchCond ← 1;
ELSE BranchCond ← 0;
FI;
FI;
ELSE (* Instruction
= LOOP *)
IF (Count
≠ 0)
THEN BranchCond ← 1;
ELSE BranchCond ← 0;
FI;
FI;
IF BranchCond
= 1
THEN
IF OperandSize
= 32
THEN EIP ← EIP + SignExtend(DEST);
ELSE IF OperandSize
= 64
THEN RIP ← RIP + SignExtend(DEST);
FI;
ELSE IF OperandSize
= 16
THEN EIP ← EIP AND 0000FFFFH;
FI;
ELSE IF OperandSize
= (32 or 64)
THEN IF (R/E)IP < CS.Base or (R/E)IP > CS.Limit
#GP; FI;