Next: i386-Memory, Previous: i386-Regs, Up: i386-Dependent [Contents][Index]
Instruction prefixes are used to modify the following instruction. They are used to repeat string instructions, to provide section overrides, to perform bus lock operations, and to change operand and address sizes. (Most instructions that normally operate on 32-bit operands will use 16-bit operands if the instruction has an operand size prefix.) Instruction prefixes are best written on the same line as the instruction they act upon. For example, the scas (scan string) instruction is repeated with:
repne scas %es:(%edi),%al
You may also place prefixes on the lines immediately preceding the instruction, but this circumvents checks that as
does with prefixes, and will not work with all prefixes.
Here is a list of instruction prefixes:
.code16
section) into 32-bit operands/addresses. These prefixes must appear on the same line of code as the instruction they modify. For example, in a 16-bit .code16
section, you might write:
addr32 jmpl *(%ebx)
64
) used to change operand size from 32-bit to 64-bit and X, Y and Z extensions bits used to extend the register set.
You may write the rex prefixes directly. The rex64xyz instruction emits rex prefix with all the bits set. By omitting the 64
, x
, y
or z
you may write other prefixes as well. Normally, there is no need to write the prefixes explicitly, since gas will automatically generate them based on the instruction operands.
Next: i386-Memory, Previous: i386-Regs, Up: i386-Dependent [Contents][Index]