4:276
Volume 4: Base IA-32 Instruction Reference
LOOP/LOOP
cc
—Loop According to ECX Counter
Description
Performs a loop operation using the ECX or CX register as a counter. Each time the
LOOP instruction is executed, the count register is decremented, then checked for 0. If
the count is 0, the loop is terminated and program execution continues with the
instruction following the LOOP instruction. If the count is not zero, a near jump is
performed to the destination (target) operand, which is presumably the instruction at
the beginning of the loop. If the address-size attribute is 32 bits, the ECX register is
used as the count register; otherwise the CX register is used.
The target instruction is specified with a relative offset (a signed offset relative to the
current value of the instruction pointer in the EIP register). This offset is generally
specified as a label in assembly code, but at the machine code level, it is encoded as a
signed, 8-bit immediate value, which is added to the instruction pointer. Offsets of -128
to +127 are allowed with this instruction.
Some forms of the loop instruction (LOOP
cc
) also accept the ZF flag as a condition for
terminating the loop before the count reaches zero. With these forms of the instruction,
a condition code (
cc
) is associated with each instruction to indicate the condition being
tested for. Here, the LOOP
cc
instruction itself does not affect the state of the ZF flag;
the ZF flag is changed by other instructions in the loop.
All branches are converted to code fetches of one or two cache lines, regardless of jump
address or cacheability.
Operation
IF AddressSize = 32
THEN
Count is ECX;
ELSE (* AddressSize = 16 *)
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;
FI;
Opcode
Instruction
Description
E2
cb
LOOP
rel8
Decrement count; jump short if count
0
E1
cb
LOOPE
rel8
Decrement count; jump short if count
0 and ZF=1
E1
cb
LOOPZ
rel8
Decrement count; jump short if count
0 and ZF=1
E0
cb
LOOPNE
rel8
Decrement count; jump short if count
0 and ZF=0
E0
cb
LOOPNZ
rel8
Decrement count; jump short if count
0 and ZF=0
Содержание ITANIUM ARCHITECTURE
Страница 1: ......
Страница 7: ...402 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 199: ...4 192 Volume 4 Base IA 32 Instruction Reference FWAIT Wait See entry for WAIT ...
Страница 269: ...4 262 Volume 4 Base IA 32 Instruction Reference LES Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 270: ...Volume 4 Base IA 32 Instruction Reference 4 263 LFS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 273: ...4 266 Volume 4 Base IA 32 Instruction Reference LGS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 288: ...Volume 4 Base IA 32 Instruction Reference 4 281 LSS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 352: ...Volume 4 Base IA 32 Instruction Reference 4 345 ROL ROR Rotate See entry for RCL RCR ROL ROR ...
Страница 368: ...Volume 4 Base IA 32 Instruction Reference 4 361 SHL SHR Shift Instructions See entry for SAL SAR SHL SHR ...
Страница 373: ...4 366 Volume 4 Base IA 32 Instruction Reference SIDT Store Interrupt Descriptor Table Register See entry for SGDT SIDT ...
Страница 589: ...4 582 Volume 4 IA 32 SSE Instruction Reference ...
Страница 590: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 Index ...
Страница 591: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 603: ...INDEX Index 12 Index for Volumes 1 2 3 and 4 ...
Страница 604: ......