# UD — Undefined Instruction

Opcode | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description
--- | --- | --- | --- | --- | ---
0F FF /r | UD01 r32, r/m32 | RM | Valid | Valid | Raise invalid opcode exception.
0F B9 /r | UD1 r32, r/m32 | RM | Valid | Valid | Raise invalid opcode exception.
0F 0B | UD2 | ZO | Valid | Valid | Raise invalid opcode exception.

> 1. Some processors decode the UD0 instruction without a ModR/M byte. As a result, those processors would deliver an invalid-opcode exception instead of a fault on instruction fetch when the instruction with a ModR/M byte (and any implied bytes) would cross a page or segment boundary.

## Instruction Operand Encoding ¶

Op/En | Operand 1 | Operand 2 | Operand 3 | Operand 4
--- | --- | --- | --- | ---
ZO | N/A | N/A | N/A | N/A
RM | ModRM:reg (r) | ModRM:r/m (r) | N/A | N/A

## Description ¶

Generates an invalid opcode exception. This instruction is provided for software testing to explicitly generate an invalid opcode exception. The opcodes for this instruction are reserved for this purpose.

Other than raising the invalid opcode exception, this instruction has no effect on processor state or memory.

Even though it is the execution of the UD instruction that causes the invalid opcode exception, the instruction pointer saved by delivery of the exception references the UD instruction (and not the following instruction).

This instruction’s operation is the same in non-64-bit modes and 64-bit mode.

## Operation ¶

    #UD (* Generates invalid opcode exception *);

## Flags Affected ¶

None.

## Exceptions (All Operating Modes) ¶

#UD Raises an invalid opcode exception in all operating modes.