xed
Overview
The xed project is a comprehensive Intel X86 Encoder Decoder (XED) toolset designed to decode and encode x86 instructions. Its primary purpose is to provide a robust and accurate framework for disassembling and reassembling x86 machine code, which is essential for reverse engineering, debugging, and developing software that interacts with x86 processors. The project addresses the challenge of accurately interpreting and manipulating x86 machine code, which is critical for applications such as software compatibility, security analysis, and compiler optimization. Key capabilities include the ability to decode and encode x86 instructions, as well as profiling and checking functions. The project leverages a monolithic architecture, with a focus on building automation, documentation, and legal compliance. The main technologies used include Python, C, and C++, with a strong emphasis on static analysis and symbolic disassembly. The project's architecture is designed to be modular, with separate modules for encoding, decoding, and other functionalities. The target users are developers, reverse engineers, and security analysts who require a high-performance, accurate, and reliable tool for working with x86 machine code. The major components work together to provide a comprehensive solution for disassembling and encoding x86 instructions, with each component contributing to the overall system's functionality and performance.
Quick Start
To build the XED project, navigate to the root directory and run python setup.py build_ext --inplace.
Architecture
Pattern: Monolithic
Entry Points
tests/RUN.TESTS: Runs tests for the XED project using various test directories and configurations.
Extension Points
- location: include/private/xed-chip-features-private.h
- how: Extensions can be made by adding new functions and macros defined in this file.
File Reference
| File | Purpose |
|---|---|
.gitignore |
Defines files and directories to be ignored by Git. |
CONTRIBUTING.md |
Provides guidelines for contributing to the XED project, including license information and sign-off. |
LICENSE |
Specifies the Apache License 2.0 for the XED project. |
README.md |
Provides instructions for building and using the XED project, including source build and building examples. |
docsrc/external-requirements.txt |
Specifies external dependencies and their usage in the project. |
docsrc/xed-build.txt |
This file contains the main documentation for Intel XED build process, including build guides, installation instructions, and system requirements. |
include/private/xed-chip-features-private.h |
Defines private functions for chip features testing and checking. |
include/private/xed-chip-modes-override.h |
Defines functions for overriding chip modes and features. |
include/private/xed-chip-modes.h |
Defines functions for setting chip modes and features. |
include/private/xed-decode-profile.h |
Defines macros and variables for profiling XED (X86 Decoder) operations, including iteration counts and node frequency. |
include/private/xed-decode-supp.h |
Contains static inline functions for checking register values and setting error flags in decoded instructions. |
include/private/xed-decoded-inst-private.h |
Contains static inline functions for decoded instruction management, including error handling and operand length calculation. |
include/private/xed-disas-private.h |
Contains functions for symbolic disassembly, including a function to retrieve symbolic disassembly information. |
include/private/xed-enc2-check.h |
Contains functions for checking encoding arguments, including functions for invalid register checks. |
include/private/xed-encode-isa-functions.h |
Contains functions for encoding instructions, including functions for nonterminal instructions. |
include/private/xed-encode-private.h |
Defines private functions and constants used in the xed-encode module, including encoding functions and constants. |
include/private/xed-encode-tables.h |
Defines tables and constants used in the xed-encode module, including encoding groups and patterns. |
include/private/xed-encode-types.h |
Defines types and constants used in the xed-encode module, including encoding function pointers and structures. |
include/private/xed-flags-private.h |
Defines flags and complex flags used in the xed-flags module, including complex flag structures and functions. |
include/private/xed-ild-extension.h |
Defines the xed-ild-extension module, which is an extension to the instruction length decoder. |
mfile.py |
A script for managing the build process of the XED project, including compiling and linking. |
misc/API.NAMES.txt |
This file contains a list of all the function and class names exported by the XED (eXtended Disassembly Engine) library. |
misc/engineering-notes.txt |
Contains detailed notes on the project, particularly on the Intel X86 Encoder Decoder. |
misc/legal-header.txt |
Provides legal information and license details for the project. |
tests/RUN.TESTS |
Runs tests for the XED project using various test directories and configurations. |
Repository Info
- URL: https://github.com/intelxed/xed.git
- Languages: Python: 59.4%, C: 28.1%, C/C++ Header: 11.3%, C++: 1.2%, Assembly: 0.0%
- Config Files: pyext/setup.py