x86 instruction listings

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Template:Short description

Template:X86 instruction listings The x86 instruction set refers to the set of instructions that x86-compatible microprocessors support. The instructions are usually part of an executable program, often stored as a computer file and executed on the processor.

The x86 instruction set has been extended several times, introducing wider registers and datatypes as well as new functionality.[1]

x86 integer instructions

Script error: No such module "Labelled list hatnote". Below is the full 8086/8088 instruction set of Intel (81 instructions total).[2] These instructions are also available in 32-bit mode, in which they operate on 32-bit registers (eax, ebx, etc.) and values instead of their 16-bit (ax, bx, etc.) counterparts. The updated instruction set is grouped according to architecture (i186, i286, i386, i486, i586/i686) and is referred to as (32-bit) x86 and (64-bit) x86-64 (also known as AMD64).

Original 8086/8088 instructions

This is the original instruction set. In the 'Notes' column, r means register, m means memory address and imm means immediate (i.e. a value).

Template:Sticky header

Added in specific processors

Added with 80186/80188

Template:Sticky header

Added with 80286

The new instructions added in 80286 add support for x86 protected mode. Some but not all of the instructions are available in real mode as well.

Template:Sticky header

Template:Notelist

Added with 80386

The 80386 added support for 32-bit operation to the x86 instruction set. This was done by widening the general-purpose registers to 32 bits and introducing the concepts of OperandSize and AddressSize – most instruction forms that would previously take 16-bit data arguments were given the ability to take 32-bit arguments by setting their OperandSize to 32 bits, and instructions that could take 16-bit address arguments were given the ability to take 32-bit address arguments by setting their AddressSize to 32 bits. (Instruction forms that work on 8-bit data continue to be 8-bit regardless of OperandSize. Using a data size of 16 bits will cause only the bottom 16 bits of the 32-bit general-purpose registers to be modified – the top 16 bits are left unchanged.)

The default OperandSize and AddressSize to use for each instruction is given by the D bit of the segment descriptor of the current code segment - D=0 makes both 16-bit, D=1 makes both 32-bit. Additionally, they can be overridden on a per-instruction basis with two new instruction prefixes that were introduced in the 80386:

  • 66h: OperandSize override. Will change OperandSize from 16-bit to 32-bit if CS.D=0, or from 32-bit to 16-bit if CS.D=1.
  • 67h: AddressSize override. Will change AddressSize from 16-bit to 32-bit if CS.D=0, or from 32-bit to 16-bit if CS.D=1.

The 80386 also introduced the two new segment registers FS and GS as well as the x86 control, debug and test registers.

The new instructions introduced in the 80386 can broadly be subdivided into two classes:

  • Pre-existing opcodes that needed new mnemonics for their 32-bit OperandSize variants (e.g. CWDE, LODSD)
  • New opcodes that introduced new functionality (e.g. SHLD, SETcc)

For instruction forms where the operand size can be inferred from the instruction's arguments (e.g. ADD EAX,EBX can be inferred to have a 32-bit OperandSize due to its use of EAX as an argument), new instruction mnemonics are not needed and not provided.

Template:Sticky header

Template:Notelist

Template:Sticky header

Template:Notelist

Added with 80486

Instruction Opcode Description Ring
BSWAP r32 0F C8+r Byte Order Swap. Usually used to convert between big-endian and little-endian data representations. For 32-bit registers, the operation performed is:
r =   (r << 24)
    | ((r << 8) & 0x00FF0000)
    | ((r >> 8) & 0x0000FF00)
    | (r >> 24);

Using BSWAP with a 16-bit register argument produces an undefined result.Template:Efn

3
CMPXCHG r/m8,r8 0F B0 /rTemplate:Efn Compare and Exchange. If accumulator (AL/AX/EAX/RAX) compares equal to first operand,Template:Efn then EFLAGS.ZF is set to 1 and the first operand is overwritten with the second operand. Otherwise, EFLAGS.ZF is set to 0, and first operand is copied into the accumulator.

Instruction atomic only if used with LOCK prefix.

CMPXCHG r/m,r16
CMPXCHG r/m,r32
0F B1 /rTemplate:Efn
XADD r/m,r8 0F C0 /r eXchange and ADD. Exchanges the first operand with the second operand, then stores the sum of the two values into the destination operand.

Instruction atomic only if used with LOCK prefix.

XADD r/m,r16
XADD r/m,r32
0F C1 /r
INVLPG m8 0F 01 /7 Invalidate the TLB entries that would be used for the 1-byte memory operand.Template:Efn

Instruction is serializing.

0
INVD 0F 08 Invalidate Internal Caches.Template:Efn Modified data in the cache are not written back to memory, potentially causing data loss.Template:Efn
WBINVD NFx 0F 09Template:Efn Write Back and Invalidate Cache.Template:Efn Writes back all modified cache lines in the processor's internal cache to main memory and invalidates the internal caches.

Template:NotelistTemplate:Vpad

Added in P5/P6-class processors

Integer/system instructions that were not present in the basic 80486 instruction set, but were added in various x86 processors prior to the introduction of SSE. (Discontinued instructions are not included.)

Template:Sticky header

Template:Notelist Template:Vpad

Added as instruction set extensions

Added with x86-64

These instructions can only be encoded in 64 bit mode. They fall in four groups:

  • original instructions that reuse existing opcodes for a different purpose (MOVSXD replacing ARPL)
  • original instructions with new opcodes (SWAPGS)
  • existing instructions extended to a 64 bit address size (JRCXZ)
  • existing instructions extended to a 64 bit operand size (remaining instructions)

Most instructions with a 64 bit operand size encode this using a REX.W prefix; in the absence of the REX.W prefix, the corresponding instruction with 32 bit operand size is encoded. This mechanism also applies to most other instructions with 32 bit operand size. These are not listed here as they do not gain a new mnemonic in Intel syntax when used with a 64 bit operand size.

Instruction Encoding Meaning Ring
CDQE REX.W 98 Sign extend EAX into RAX 3
CQO REX.W 99 Sign extend RAX into RDX:RAX
CMPSQ REX.W A7 CoMPare String Quadword
CMPXCHG16B m128Template:EfnTemplate:Efn REX.W 0F C7 /1 CoMPare and eXCHanGe 16 Bytes.
Atomic only if used with LOCK prefix.
IRETQ REX.W CF 64-bit Return from Interrupt
JRCXZ rel8 E3 cb Jump if RCX is zero
LODSQ REX.W AD LoaD String Quadword
MOVSXD r64,r/m32 REX.W 63 /rTemplate:Efn MOV with Sign Extend 32-bit to 64-bit
MOVSQ REX.W A5 Move String Quadword
POPFQ 9D POP RFLAGS Register
PUSHFQ 9C PUSH RFLAGS Register
SCASQ REX.W AF SCAn String Quadword
STOSQ REX.W AB STOre String Quadword
SWAPGS 0F 01 F8 Exchange GS base with KernelGSBase MSR 0

Template:NotelistTemplate:Vpad

Bit manipulation extensions

Script error: No such module "Labelled list hatnote".

Bit manipulation instructions. For all of the VEX-encoded instructions defined by BMI1 and BMI2, the operand size may be 32 or 64 bits, controlled by the VEX.W bit – none of these instructions are available in 16-bit variants. The VEX-encoded instructions are not available in Real Mode and Virtual-8086 mode - other than that, the bit manipulation instructions are available in all operating modes on supported CPUs.

Bit Manipulation Extension Instruction
mnemonics
Opcode Instruction description Added in
<templatestyles src="Glossary/styles.css" />
<dt id="Script error: No such module "delink"." >ABM (LZCNT)Template:EfnTemplate:Defn
POPCNT r16,r/m16
POPCNT r32,r/m32
F3 0F B8 /r Population Count. Counts the number of bits that are set to 1 in its source argument. K10,
Bobcat,
Haswell,
ZhangJiang,
Gracemont
POPCNT r64,r/m64 F3 REX.W 0F B8 /r
LZCNT r16,r/m16
LZCNT r32,r/m32
F3 0F BD /r Count Leading zeroes.Template:Efn
If source operand is all-0s, then LZCNT will return operand size in bits (16/32/64) and set CF=1.
LZCNT r64,r/m64 F3 REX.W 0F BD /r
<templatestyles src="Glossary/styles.css" />
<dt id="Script error: No such module "delink"." >BMI1Template:Defn
TZCNT r16,r/m16
TZCNT r32,r/m32
F3 0F BC /r Count Trailing zeroes.Template:Efn
If source operand is all-0s, then TZCNT will return operand size in bits (16/32/64) and set CF=1.
Haswell,
Piledriver,
Jaguar,
ZhangJiang,
Gracemont
TZCNT r64,r/m64 F3 REX.W 0F BC /r
ANDN ra,rb,r/m VEX.LZ.0F38 F2 /r Bitwise AND-NOT: ra = r/m AND NOT(rb)
BEXTR ra,r/m,rb VEX.LZ.0F38 F7 /r Bitfield extract. Bitfield start position is specified in bits [7:0] of rb, length in bits[15:8] of rb. The bitfield is then extracted from the r/m value with zero-extension, then stored in ra. Equivalent toTemplate:Efn
mask = (1 << rb[15:8]) - 1
ra = (r/m >> rb[7:0]) AND mask
BLSI reg,r/m VEX.LZ.0F38 F3 /3 Extract lowest set bit in source argument. Returns 0 if source argument is 0. Equivalent to
dst = (-src) AND src
BLSMSK reg,r/m VEX.LZ.0F38 F3 /2 Generate a bitmask of all-1s bits up to the lowest bit position with a 1 in the source argument. Returns all-1s if source argument is 0. Equivalent to
dst = (src-1) XOR src
BLSR reg,r/m VEX.LZ.0F38 F3 /1 Copy all bits of the source argument, then clear the lowest set bit. Equivalent to
dst = (src-1) AND src
<templatestyles src="Glossary/styles.css" />
<dt id="Script error: No such module "delink"." >BMI2Template:Defn
BZHI ra,r/m,rb VEX.LZ.0F38 F5 /rScript error: No such module "Check for unknown parameters". Zero out high-order bits in r/m starting from the bit position specified in rb, then write result to rd. Equivalent to
ra = r/m AND NOT(-1 << rb[7:0])
Haswell,
Excavator,Template:Efn
ZhangJiang,
Gracemont
MULX ra,rb,r/m VEX.LZ.F2.0F38 F6 /rScript error: No such module "Check for unknown parameters". Widening unsigned integer multiply without setting flags. Multiplies EDX/RDX with r/m, then stores the low half of the multiplication result in ra and the high half in rb. If ra and rb specify the same register, only the high half of the result is stored.
PDEP ra,rb,r/m VEX.LZ.F2.0F38 F5 /rScript error: No such module "Check for unknown parameters". Parallel Bit Deposit. Scatters contiguous bits from rb to the bit positions set in r/m, then stores result to ra. Operation performed is:
ra=0; k=0; mask=r/m
for i=0 to opsize-1 do
   if (mask[i] == 1) then
       ra[i]=rb[k]; k=k+1
PEXT ra,rb,r/m VEX.LZ.F3.0F38 F5 /rScript error: No such module "Check for unknown parameters". Parallel Bit Extract. Uses r/m argument as a bit mask to select bits in rb, then compacts the selected bits into a contiguous bit-vector. Operation performed is:
ra=0; k=0; mask=r/m
for i=0 to opsize-1 do
   if (mask[i] == 1) then
       ra[k]=rb[i]; k=k+1
RORX reg,r/m,imm8 VEX.LZ.F2.0F3A F0 /r ibScript error: No such module "Check for unknown parameters". Rotate right by immediate without affecting flags.
SARX ra,r/m,rb VEX.LZ.F3.0F38 F7 /rScript error: No such module "Check for unknown parameters". Arithmetic shift right without updating flags.
For SARX, SHRX and SHLX, the shift-amount specified in rb is masked to 5 bits for 32-bit operand size and 6 bits for 64-bit operand size.
SHRX ra,r/m,rb VEX.LZ.F2.0F38 F7 /rScript error: No such module "Check for unknown parameters". Logical shift right without updating flags.
SHLX ra,r/m,rb VEX.LZ.66.0F38 F7 /rScript error: No such module "Check for unknown parameters". Shift left without updating flags.

Template:NotelistTemplate:Vpad

Added with Intel TSX

Script error: No such module "Labelled list hatnote".

TSX Subset Instruction Opcode Description Added in
<templatestyles src="Glossary/styles.css" />
<dt id="Script error: No such module "delink"." >RTMTemplate:Defn
XBEGIN rel16
XBEGIN rel32
C7 F8 cw
C7 F8 cd
Start transaction. If transaction fails, perform a branch to the given relative offset. Haswell
(Deprecated on desktop/laptop CPUs from 10th generation (Ice Lake, Comet Lake) onwards, but continues to be available on Xeon-branded server parts (e.g. Ice Lake-SP, Sapphire Rapids))
XABORT imm8 C6 F8 ib Abort transaction with 8-bit immediate as error code.
XEND NP 0F 01 D5 End transaction.
XTEST NP 0F 01 D6 Test if in transactional execution. Sets EFLAGS.ZF to 0 if executed inside a transaction (RTM or HLE), 1 otherwise.
<templatestyles src="Glossary/styles.css" />
<dt id="Script error: No such module "delink"." >HLETemplate:Defn
XACQUIRE F2 Instruction prefix to indicate start of hardware lock elision, used with memory atomic instructions only (for other instructions, the F2 prefix may have other meanings). When used with such instructions, may start a transaction instead of performing the memory atomic operation. Haswell
(Discontinued – the last processors to support HLE were Coffee Lake and Cascade Lake)
XRELEASE F3 Instruction prefix to indicate end of hardware lock elision, used with memory atomic/store instructions only (for other instructions, the F3 prefix may have other meanings). When used with such instructions during hardware lock elision, will end the associated transaction instead of performing the store/atomic.
<templatestyles src="Glossary/styles.css" />
<dt id="Script error: No such module "delink"." >TSXLDTRKTemplate:Defn
XSUSLDTRK F2 0F 01 E8 Suspend Tracking Load Addresses Sapphire Rapids
XRESLDTRK F2 0F 01 E9 Resume Tracking Load Addresses

Template:Vpad

Added with Intel CET

Intel CET (Control-Flow Enforcement Technology) adds two distinct features to help protect against security exploits such as return-oriented programming: a shadow stack (CET_SS), and indirect branch tracking (CET_IBT).

CET Subset Instruction Opcode Description Ring Added in
<templatestyles src="Glossary/styles.css" />
<dt id="Script error: No such module "delink"." >CET_SSTemplate:Defn
INCSSPD r32 F3 0F AE /5 Increment shadow stack pointer 3 Tiger Lake,
Zen 3
INCSSPQ r64 F3 REX.W 0F AE /5
RDSSPD r32 F3 0F 1E /1 Read shadow stack pointer into register (low 32 bits)Template:Efn
RDSSPQ r64 F3 REX.W 0F 1E /1 Read shadow stack pointer into register (full 64 bits)Template:Efn
SAVEPREVSSP F3 0F 01 EA Save previous shadow stack pointer
RSTORSSP m64 F3 0F 01 /5 Restore saved shadow stack pointer
WRSSD m32,r32 NP 0F 38 F6 /r Write 4 bytes to shadow stack
WRSSQ m64,r64 NP REX.W 0F 38 F6 /r Write 8 bytes to shadow stack
WRUSSD m32,r32 66 0F 38 F5 /r Write 4 bytes to user shadow stack 0
WRUSSQ m64,r64 66 REX.W 0F 38 F5 /r Write 8 bytes to user shadow stack
SETSSBSY F3 0F 01 E8 Mark shadow stack busy
CLRSSBSY m64 F3 0F AE /6 Clear shadow stack busy flag
<templatestyles src="Glossary/styles.css" />
<dt id="Script error: No such module "delink"." >CET_IBTTemplate:Defn
ENDBR32 F3 0F 1E FB Terminate indirect branch in 32-bit modeTemplate:Efn 3 Tiger Lake
ENDBR64 F3 0F 1E FA Terminate indirect branch in 64-bit modeTemplate:Efn
NOTRACK 3ETemplate:Efn Prefix used with indirect CALL/JMP near instructions (opcodes FF /2 and FF /4) to indicate that the branch target is not required to start with an ENDBR32/64 instruction. Prefix only honored when NO_TRACK_EN flag is set.

Template:NotelistTemplate:Vpad

Added with XSAVE

The XSAVE instruction set extensions are designed to save/restore CPU extended state (typically for the purpose of context switching) in a manner that can be extended to cover new instruction set extensions without the OS context-switching code needing to understand the specifics of the new extensions. This is done by defining a series of state-components, each with a size and offset within a given save area, and each corresponding to a subset of the state needed for one CPU extension or another. The EAX=0Dh CPUID leaf is used to provide information about which state-components the CPU supports and what their sizes/offsets are, so that the OS can reserve the proper amount of space and set the associated enable-bits.

XSAVE Extension Instruction
mnemonics
OpcodeTemplate:Efn Instruction description Ring Added in
<templatestyles src="Glossary/styles.css" />
<dt id="Script error: No such module "delink"." >XSAVETemplate:Defn
XSAVE mem
XSAVE64 mem
NP 0F AE /4
NP REX.W 0F AE /4
Save state components specified by bitmap in EDX:EAX to memory. 3 Penryn,Template:Efn
Bulldozer,
Jaguar,
Goldmont,
ZhangJiang
XRSTOR mem
XRSTOR64 mem
NP 0F AE /5
NP REX.W 0F AE /5
Restore state components specified by EDX:EAX from memory.
XGETBV NP 0F 01 D0 Get value of Extended Control Register.
Reads an XCR specified by ECX into EDX:EAX.Template:Efn
XSETBV NP 0F 01 D1 Set Extended Control Register.Template:Efn
Write the value in EDX:EAX to the XCR specified by ECX.
0
<templatestyles src="Glossary/styles.css" />
<dt id="Script error: No such module "delink"." >XSAVEOPTTemplate:Defn
XSAVEOPT mem
XSAVEOPT64 mem
NP 0F AE /6
NP REX.W 0F AE /6
Save state components specified by EDX:EAX to memory.
Unlike the older XSAVE instruction, XSAVEOPT may abstain from writing processor state items to memory when the CPU can determine that they haven't been modified since the most recent corresponding XRSTOR.
3 Sandy Bridge,
Steamroller,
Puma,
Goldmont,
ZhangJiang
<templatestyles src="Glossary/styles.css" />
<dt id="Script error: No such module "delink"." >XSAVECTemplate:Defn
XSAVEC mem
XSAVEC64 mem
NP 0F C7 /4
NP REX.W 0F C7 /4
Save processor extended state components specified by EDX:EAX to memory with compaction. 3 Skylake,
Goldmont,
Zen 1
<templatestyles src="Glossary/styles.css" />
<dt id="Script error: No such module "delink"." >XSSTemplate:Defn
XSAVES mem
XSAVES64 mem
NP 0F C7 /5
NP REX.W 0F C7 /5
Save processor extended state components specified by EDX:EAX to memory with compaction and optimization if possible. 0 Skylake,
Goldmont,
Zen 1
XRSTORS mem
XRSTORS64 mem
NP 0F C7 /3
NP REX.W 0F C7 /3
Restore state components specified by EDX:EAX from memory.

Template:Notelist Template:Vpad

Added with other cross-vendor extensions

Template:Sticky header

Template:NotelistTemplate:Vpad

Added with other Intel-specific extensions

Template:Sticky header

Template:NotelistTemplate:Vpad

Added with other AMD-specific extensions

Template:Sticky header

Template:NotelistTemplate:Vpad

x87 floating-point instructions

The x87 coprocessor, if present, provides support for floating-point arithmetic. The coprocessor provides eight data registers, each holding one 80-bit floating-point value (1 sign bit, 15 exponent bits, 64 mantissa bits) – these registers are organized as a stack, with the top-of-stack register referred to as "st" or "st(0)", and the other registers referred to as st(1), st(2), ...st(7). It additionally provides a number of control and status registers, including "PC" (precision control, to control whether floating-point operations should be rounded to 24, 53 or 64 mantissa bits) and "RC" (rounding control, to pick rounding-mode: round-to-zero, round-to-positive-infinity, round-to-negative-infinity, round-to-nearest-even) and a 4-bit condition code register "CC", whose four bits are individually referred to as C0, C1, C2 and C3). Not all of the arithmetic instructions provided by x87 obey PC and RC.

Original 8087 instructions

Template:Sticky header

Template:Notelist

x87 instructions added in later processors

Template:Sticky header

Template:Notelist

SIMD instructions

Script error: No such module "Labelled list hatnote".

Cryptographic instructions

Script error: No such module "Labelled list hatnote".

Virtualization instructions

Script error: No such module "Labelled list hatnote".

Other instructions

Script error: No such module "Labelled list hatnote".

x86 also includes discontinued instruction sets which are no longer supported by Intel and AMD, and undocumented instructions which execute but are not officially documented.

Undocumented x86 instructions

The x86 CPUs contain undocumented instructions which are implemented on the chips but not listed in some official documents. They can be found in various sources across the Internet, such as Ralf Brown's Interrupt List and at sandpile.org

Some of these instructions are widely available across many/most x86 CPUs, while others are specific to a narrow range of CPUs.

Undocumented instructions that are widely available across many x86 CPUs include

Template:Sticky header

Undocumented instructions that appear only in a limited subset of x86 CPUs include

Template:Sticky header

Undocumented x87 instructions

Mnemonics Opcodes Description Status
FENI,

FENI8087_NOP

DB E0 FPU Enable Interrupts (8087) Documented for the Intel 80287.[76]

Present on all Intel x87 FPUs from 80287 onwards. For FPUs other than the ones where they were introduced on (8087 for FENI/FDISI and 80287 for FSETPM), they act as NOPs.

These instructions and their operation on modern CPUs are commonly mentioned in later Intel documentation, but with opcodes omitted and opcode table entries left blank (e.g. Intel SDM 325462-077, April 2022 mentions them twice without opcodes).

The opcodes are, however, recognized by Intel XED.[77]

FDISI,

FDISI8087_NOP

DB E1 FPU Disable Interrupts (8087)
FSETPM,

FSETPM287_NOP

DB E4 FPU Set Protected Mode (80287)
(no mnemonic) D9 D7,  D9 E2,
D9 E7,  DD FC,
DE D8,  DE DA,
DE DC,  DE DD,
DE DE,  DF FC
"Reserved by Cyrix" opcodes These opcodes are listed as reserved opcodes that will produce "unpredictable results" without generating exceptions on at least Cyrix 6x86,[78] 6x86MX, MII, MediaGX, and AMD Geode GX/LX.[79] (The documentation for these CPUs all list the same ten opcodes.)

Their actual operation is not known, nor is it known whether their operation is the same on all of these CPUs.

See also

References

<templatestyles src="Reflist/styles.css" />

  1. Script error: No such module "citation/CS1".
  2. Script error: No such module "citation/CS1".
  3. Script error: No such module "citation/CS1"..
  4. Frank van Gilluwe, "The Undocumented PC, second edition", 1997, Template:ISBN, page 55
  5. Script error: No such module "citation/CS1".
  6. Microprocessor Report, System Management Mode Explained (vol 6, no. 8, june 17, 1992). Archived on Jun 29, 2022.
  7. Ellis, Simson C., "The 386 SL Microprocessor in Notebook PCs", Intel Corporation, Microcomputer Solutions, March/April 1991, page 20
  8. Cyrix 486SLC/e Data Sheet (1992), section 2.6.4
  9. JookWiki, "nopl", sep 24, 2022 – provides a lengthy account of the history of the long NOP and the issues around it. Archived on oct 28, 2022.
  10. Debian bug report logs, -686 build uses long noops, that are unsupported by Transmeta Crusoe, immediate crash on boot, see messages 148 and 158 for NOPL on VIA C7. Archived on 1 Aug 2019
  11. Intel, Pentium® Processor Family Developer's Manual Volume 3, 1995. order no. 241430-004, appendix A, page 943 – reserves the opcodes 0F 0B and 0F B9.
  12. Cyrix, 6x86 processor data book, 1996, order no. 94175-01, table 6-20, page 209 – uses the mnemonic OIO ("Official invalid opcode") for the 0F FF opcode.
  13. AMD, AMD-K5 Processor Technical Reference Manual, Nov 1996, order no. 18524C/0, section 3.3.7, page 90 – reserves the 0F FF opcode without assigning it a mnemonic.
  14. AMD, Athlon Processor x86 Code Optimization Guide, publication no. 22007, rev K, feb 2002, appendix F, page 284. Archived on 13 Apr 2017.
  15. Guru3D, VIA Zhaoxin x86 4 and 8-core SoC processors launch, Jan 22, 2018
  16. Intel, Intel 64 and IA-32 Architectures Optimization Reference Manual: Volume 1, order no. 248966-050US, April 2024, chapter 2.1.1.1, page 46. Archived on 25 Jan 2025.
  17. Intel, Intel® Software Guard Extensions (Intel® SGX) Architecture for Oversubscription of Secure Memory in a Virtualized Environment, 25 Jun 2017. Archived on 31 Mar 2023.
  18. Robert Collins, Undocumented OpCodes: AAM. Archived on 21 Feb 2001
  19. Retrocomputing StackExchange, 0F1h opcode-prefix on i80286. Archived on 13 Apr 2023.
  20. a b Frank van Gilluwe, "The Undocumented PC – Second Edition", p. 93-95
  21. Michal Necasek, Intel 486 Errata?, 6 Dec 2015. Archived on 29 Nov 2023.
  22. Robert Hummel, "PC Magazine Programmer's Technical Reference" (Template:ISBN) p.728
  23. Raúl Gutiérrez Sanz, Undocumented 8086 Opcodes, Part I, 27 Dec 2017. Archived on 29 Nov 2023.
  24. a b Script error: No such module "citation/CS1".
  25. Intel, The 8086 Family User's Manual, October 1979, opcodes omitted on pages 4-25 and 4-31
  26. Retrocomputing StackExchange, Undocumented instructions in x86 CPU prior to 80386?, 4 Jun 2021. Archived on 18 Jul 2023.
  27. Daniel B. Sedory, An Examination of the Standard MBR, 2000. Archived on 6 Oct 2023.
  28. AMD, Software Optimization Guide for AMD64 Processors (publication 25112, revision 3.06, sep 2005), section 6.2, p.128
  29. GCC bugzilla, Bug 48227 – "rep ret" generated for -march=core2. Archived on 9 Apr 2023.
  30. Raymond Chen, My, what strange NOPs you have!, 12 Jan 2011. Archived on 20 May 2023.
  31. Jeff Parsons, Intel 80386 CPU information (B1 errata section, item #7). Archived on 13 Nov 2023.
  32. Cite error: Script error: No such module "Namespace detect".Script error: No such module "Namespace detect".
  33. Intel Software Developers Manual, volume 2B (Jan 2006, order no 235667-018, does not have long NOP)
  34. Intel Software Developers Manual, volume 2B (March 2006, order no 235667-019, has long NOP)
  35. Agner Fog, Instruction Tables, AMD K7 section.
  36. Script error: No such module "citation/CS1".
  37. Intel Software Developers Manual, volume 2B (April 2005, order no 235667-015, does not list 0F0D-nop)
  38. Intel Software Developers Manual, volume 2B (June 2005, order no 235667-016, lists 0F0D-nop in opcode table but not under NOP instruction description.)
  39. Cite error: Script error: No such module "Namespace detect".Script error: No such module "Namespace detect".
  40. Intel Software Developers Manual, volume 2B (order no. 253667-060, September 2016) does not list UD0 and UD1.
  41. Cite error: Script error: No such module "Namespace detect".Script error: No such module "Namespace detect".
  42. Script error: No such module "citation/CS1".
  43. Script error: No such module "citation/CS1".
  44. Script error: No such module "citation/CS1".
  45. Script error: No such module "citation/CS1".
  46. Script error: No such module "citation/CS1".
  47. Script error: No such module "citation/CS1".
  48. a b Script error: No such module "citation/CS1".
  49. Script error: No such module "citation/CS1".
  50. Script error: No such module "citation/CS1".
  51. Intel's RCCE library for the SCC used opcode 0F 0A for SCC's message invalidation instruction.
  52. Intel Labs, SCC External Architecture Specification (EAS), Revision 0.94, p.29. Archived on May 22, 2022.
  53. Script error: No such module "citation/CS1".
  54. Robert R. Collins, Undocumented OpCodes: UMOV. Archived on Feb 21, 2001.
  55. Herbert Oppmann, NXOP (Opcode 0Fh 55h)
  56. Herbert Oppmann, NexGen Nx586 Hypercode Source, see COMMON.INC. Archived on 9 Apr 2023.
  57. Herbert Oppmann, Inside the NexGen Nx586 System BIOS. Archived on 29 Dec 2023.
  58. Intel, XuCode: An Innovative Technology for Implementing Complex Instruction Flows, May 6, 2021. Archived on Jul 19, 2022.
  59. Grzegorz Mazur, AMD 3DNow! undocumented instructions
  60. a b Script error: No such module "citation/CS1".
  61. Potemkin's Hacker Group's OPCODE.LST, v4.51, 15 Oct 1999. Archived on 21 May 2001.
  62. Script error: No such module "citation/CS1".
  63. Agner Fog, The Microarchitecture of Intel, AMD and VIA CPUs, section 3.4 "Branch Prediction in P4 and P4E". Archived on 7 Jan 2024.
  64. Reddit /r/Amd discussion thread: Ryzen has undocumented support for FMA4
  65. a b Christopher Domas, Breaking the x86 ISA, 27 July 2017. Archived on 27 Dec 2023.
  66. a b Xixing Li et al, UISFuzz: An Efficient Fuzzing Method for CPU Undocumented Instruction Searching, 9 Oct 2019. Archived on 27 Dec 2023.
  67. Microprocessor Report, MediaGX Targets Low-Cost PCs (vol 11, no. 3, mar 10, 1997). Archived on 6 Jun 2022.
  68. Script error: No such module "citation/CS1".
  69. https://lkml.iu.edu/2308.0/02183.html
  70. Kary Jin, PATCH: Update PadLock engine for VIA C7 and Nano CPUs, openssl-dev mailing list, 10 Jun 2011. Archived on 11 Feb 2022.
  71. a b https://gitee.com/openeuler/kernel/pulls/85
  72. USPTO/Zhaoxin, Patent application US2023/006718: Processor with a hash cryptographic algorithm and data processing thereof, pages 13 and 45, Mar 2, 2023. Archived on Sep 12, 2023.
  73. https://lwn.net/Articles/950884/
  74. a b InstLatx64, CPUID dump for Zhaoxin KaiXian KX-6000G – has the SM2 and xmodx feature bits set (CPUID leaf C0000001:EDX:bits 0 and 29). Archived on Jul 25, 2023.
  75. OpenEuler kernel pull request 2602: x86/delay: add support for Zhaoxin ZXPAUSE instruction. Gitee. 26 Oct 2023. Archived on 22 Jan 2024.
  76. Cite error: Script error: No such module "Namespace detect".Script error: No such module "Namespace detect".
  77. ISA datafile for Intel XED (April 17, 2022), lines 916-944
  78. Cyrix 6x86 processor data book, page 6-34
  79. AMD Geode LX Processors Data Book, publication 33234H, p.670

Script error: No such module "Check for unknown parameters".

  • Script error: No such module "citation/CS1".

External links

Template:Sister project

Template:X86 assembly topics