All Projects → MahdiSafsafi → Parsable-Instructions

MahdiSafsafi / Parsable-Instructions

Licence: MIT license
A parsable list of x86 instructions.

Projects that are alternatives of or similar to Parsable-Instructions

bmod
bmod parses binaries for modification/patching and disassembles machine code sections.
Stars: ✭ 12 (-50%)
Mutual labels:  x86-64
AiliceOS
AiliceOS: Build an x86_64 and UEFI OS using Rust
Stars: ✭ 59 (+145.83%)
Mutual labels:  x86-64
CuBit
General-purpose, formally-verified, 64-bit operating system in SPARK/Ada for x86-64
Stars: ✭ 70 (+191.67%)
Mutual labels:  x86-64
kasm
Assembler library for Kotlin
Stars: ✭ 40 (+66.67%)
Mutual labels:  x86-64
goas
port of GNU Assembler written in go
Stars: ✭ 52 (+116.67%)
Mutual labels:  x86-64
Azote
Fast and lightweight AArch64 disassembler.
Stars: ✭ 24 (+0%)
Mutual labels:  opcodes
saturn
A microkernel based operating system developed from scratch. This repository also includes all Saturn services and applications.
Stars: ✭ 21 (-12.5%)
Mutual labels:  x86-64
ArvernOS
💾 A minimal, experimental and "toy" monolithic kernel to learn about OS development // Work In Progress
Stars: ✭ 313 (+1204.17%)
Mutual labels:  x86-64
profiler-api
The portable version of JetBrains profiler API for .NET Framework / .NET Core / .NET / .NET Standard / Mono
Stars: ✭ 21 (-12.5%)
Mutual labels:  x86-64
boot2flappy
Flappy Bird as bootable UEFI executable
Stars: ✭ 48 (+100%)
Mutual labels:  x86-64
libcluon
libcluon is a small and efficient, single-file and header-only library written in modern C++ to power microservices.
Stars: ✭ 81 (+237.5%)
Mutual labels:  x86-64
Tagha
Minimal, low-level, fast, and self-contained register-based bytecode virtual machine/runtime environment.
Stars: ✭ 101 (+320.83%)
Mutual labels:  x86-64
MoonOS
MoonOS (just a kernel atm) is a micro kernel designed for the x86_64 and arm architecure.
Stars: ✭ 82 (+241.67%)
Mutual labels:  x86-64
SDA
SDA is a rich cross-platform tool for reverse engineering that focused firstly on analysis of computer games. I'm trying to create a mix of the Ghidra, Cheat Engine and x64dbg. My tool will combine static and dynamic analysis of programs. Now SDA is being developed.
Stars: ✭ 98 (+308.33%)
Mutual labels:  x86-64
moros
MOROS: Obscure Rust Operating System 🦉
Stars: ✭ 508 (+2016.67%)
Mutual labels:  x86-64
asm2cfg
Python command-line tool and GDB extension to view and save x86, ARM and objdump assembly files as control-flow graph (CFG) pdf files
Stars: ✭ 42 (+75%)
Mutual labels:  x86-64
MetalOS
Homebrew x64 OS written in C++ that runs Doom!
Stars: ✭ 33 (+37.5%)
Mutual labels:  x86-64
systems-programming-cheat-sheet
Cheat sheet for x86-64 Unix systems programming
Stars: ✭ 328 (+1266.67%)
Mutual labels:  x86-64
Capstone.NET
.NET Core and .NET Framework binding for the Capstone Disassembly Framework
Stars: ✭ 108 (+350%)
Mutual labels:  x86-64
qsim
QEMU based emulation library for micro-architectural simulation (ARM64 and x86)
Stars: ✭ 35 (+45.83%)
Mutual labels:  x86-64

IMPORTANT:

The project is dead ! No longer supported.

Consider using opcodesDB.

Parsable-Instructions

List of all instructions found in Intel and AMD documentations, listed into XML files for easy parsing. Each instruction in the XML file contains:

  • Instruction mnemonic.
  • Instruction arguments.
  • Instruction opcode.
  • Instruction opcode encoding.
  • Instruction 64 bit mode support.
  • Instruction 32 bit mode support.
  • Instruction CPUID flags.
  • Instruction operands encoding.
  • Instruction description.

NOTE: Some fields listed above may not exists in other instructions.

For each XML file there is a DTD file associated which is used to ensure that the XML file follows the same rules for all XML files.

XML files

  • raw.x86.Intel.AZ.xml: Contains all instructions found in “Intel® 64 and IA-32 Architectures Software Developer Manuals volume 2”.
  • *raw.x86.Intel.AVX512_r22.xml: Contains all instructions found in “Intel® Architecture Instruction Set Extensions Programming Reference 319433-022”.
  • raw.x86.Intel.AVX512_r24.xml: Contains all instructions found in “Intel® Architecture Instruction Set Extensions Programming Reference 319433-024”.
  • raw.x86.AMD.3DNow.xml: Contains all instructions found in "AMD 3DNow! Technology Manual".
  • raw.x86.AMD.SSE5.xml: Contains all instructions found in "AMD 128-Bit SSE5 Instruction Set".
  • raw.x86.AMD.XOP.xml: Contains all instructions found in "AMD64 Architecture Programmers Manual Volume 6: 128-Bit and 256-Bit XOP and FMA4 Instructions".

* means deprecated.

KEY TO ABBREVIATIONS

  • x32m = 32-bit mode support.
  • x64m = 64-bit mode support.
  • mnem = Instruction Mnemonic.
  • args = Instruction Arguments.
  • opc = Opcodes.
  • openc = Operand Encoding name.
  • dscrp = Description.
  • oprndenc = Instruction Operand Encoding.
  • oprnd1 = Operand 1.
  • oprnd2 = Operand 2.
  • oprnd3 = Operand 3.
  • oprnd4 = Operand 4.

NOTE: FOR THE REST OF KEYS YOU SHOULD REFER TO INTEL/AMD DOCUMENTATIONS!

Example

Here's a simple example of ADDPD instruction.

<common>
	<brief>ADDPD--Add Packed Double-Precision Floating-Point Values.</brief>
	<ins x32m="V" x64m="V">
		<mnem>ADDPD</mnem>
		<args>xmm1,xmm2/m128</args>
		<opc openc="RM">66 0F 58 /r</opc>
		<cpuid>
			<flag>SSE2</flag>
		</cpuid>
		<dscrp>Add packed double-precision floating-point values from xmm2/m128 to xmm1.</dscrp>
	</ins>
	<ins x32m="V" x64m="V">
		<mnem>VADDPD</mnem>
		<args>xmm1,xmm2,xmm3/m128</args>
		<opc openc="RVM">VEX.NDS.128.66.0F.WIG 58 /r</opc>
		<cpuid>
			<flag>AVX</flag>
		</cpuid>
		<dscrp>Add packed double-precision floating-point values from xmm3/mem to xmm2 and stores result in xmm1.</dscrp>
	</ins>
	<ins x32m="V" x64m="V">
		<mnem>VADDPD</mnem>
		<args>ymm1,ymm2,ymm3/m256</args>
		<opc openc="RVM">VEX.NDS.256.66.0F.WIG 58 /r</opc>
		<cpuid>
			<flag>AVX</flag>
		</cpuid>
		<dscrp>Add packed double-precision floating-point values from ymm3/mem to ymm2 and stores result in ymm1.</dscrp>
	</ins>
	<oprndenc openc="RM">
		<oprnd1>ModRM:reg(r,w)</oprnd1>
		<oprnd2>ModRM:r/m(r)</oprnd2>
		<oprnd3>NA</oprnd3>
		<oprnd4>NA</oprnd4>
	</oprndenc>
	<oprndenc openc="RVM">
		<oprnd1>ModRM:reg(w)</oprnd1>
		<oprnd2>VEX.vvvv(r)</oprnd2>
		<oprnd3>ModRM:r/m(r)</oprnd3>
		<oprnd4>NA</oprnd4>
	</oprndenc>
</common>
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].