1 instruction opcode byte encoding, 2 instruction operands byte encoding – Intel Extensible Firmware Interface User Manual

Page 784

Advertising
background image

Extensible Firmware Interface Specification

19-10

12/01/02

Version 1.10

19.7.1 Instruction Opcode Byte Encoding

The first byte of an instruction is the opcode byte, and an instruction’s actual opcode value
consumes 6 bits of this byte. The remaining two bits will typically be used to indicate operand sizes
and/or presence or absence of index or immediate data. Table 19-6 defines the bits in the opcode
byte for most instructions, and their usage.

Table 19-6. Opcode Byte Encoding

Bit Sym

Description

6..7

Modifiers

One or more of:

• Index or immediate data present/absent
• Operand size
• Index or immediate data size

0..5 Op

Instruction

opcode


For those instructions that use bit 7 to indicate the presence of an index or immediate data and bit 6
to indicate the size of the index or immediate data, if bit 7 is 0 (no immediate data), then bit 6 is
ignored by the VM. Otherwise, unless otherwise specified for a given instruction, setting unused
bits in the opcode byte results in an instruction encoding exception when the instruction is
executed. Setting the modifiers field in the opcode byte to reserved values will also result in an
instruction encoding exception.

19.7.2 Instruction Operands Byte Encoding

The second byte of most encoded instructions is an operand byte, which encodes the registers for
the instruction operands and whether the operands are direct or indirect. Table 19-7 defines the
encoding for the operand byte for these instructions. Unless otherwise specified for a given
instruction, setting unused bits in the operand byte results in an instruction encoding exception
when the instruction is executed. Setting fields in the operand byte to reserved values will also
result in an instruction encoding exception.

Table 19-7. Operand Byte Encoding

Bit Description

7

0 = Operand 2 is direct
1 = Operand 2 is indirect

4..6 Operand

2

register

3

0 = Operand 1 is direct
1 = Operand 1 is indirect

0..2 Operand

1

register

Advertising