-
Notifications
You must be signed in to change notification settings - Fork 6
/
index.html
93 lines (84 loc) · 4.11 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<HTML>
<HEAD>
<style>
p { font-family: Consolas, Arial, Helvetica, sans-serif; }
</style>
<TITLE>
Intel® XED
</TITLE>
</HEAD>
<BODY>
<CENTER>
<FONT COLOR="#bb0000">
<H1>
<I>
Intel® XED
</I>
</H1>
</FONT>
</CENTER>
<HR>
<p> The Intel® X86 Encoder Decoder (Intel® XED) is a software library (and
associated headers) for encoding and decoding X86 (IA32 and
Intel64) instructions. The decoder takes sequences of 1-15 bytes
along with machine mode information and produces a data
structure describing the opcode, operands, and flags. The
encoder takes a similar data structure and produces a sequence
of 1 to 15 bytes. Disassembly is essentially a printing pass on
the data structure.
<P> Intel® XED is the encoder/decoder used
by <A HREF="https://software.intel.com/en-us/articles/pin-a-dynamic-binary-instrumentation-tool">Pin</A>
and
the <A HREF="https://software.intel.com/en-us/articles/intel-software-development-emulator">Intel®
Software Development Emulator (SDE)</A>. Intel® XED is used by the
<A HREF="http://people.csail.mit.edu/emer/papers/2002.02.computer.asim.pdf">ASIM
performance
model</A>, <A HREF="http://www.cs.virginia.edu/kim/docs/wish11zsim.pdf">ZSIM</A>,
<A HREF="https://software.intel.com/en-us/intel-vtune-amplifier-xe">Intel® VTune Amplifier</A>, <A HREF="https://software.intel.com/en-us/articles/intel-architecture-code-analyzer">IACA</A>,
and in projects at McAfee, Wind River, and many other
projects inside and outside Intel.
<p> Intel® XED supports the notion of layers of instructions. As new
instructions corresponding to future processors are made public,
the associated layers are added
to the tables of instructions in the "datafiles" subdirectory.
(Intel typically announces and documents instructions in the
<A HREF="http://www.intel.com/software/isa">ISE</A> and
<A HREF="http://www.intel.com/sdm">SDM</A> documents).
<p> Intel® XED compiles with various compilers (GNU gcc, MSVS, Intel
ICC/ICL and Clang) and is supported on various operating systems
(Linux, Microsoft Window, Apple OS X, etc.).
<p> The Intel® XED examples also include binary image readers for
Windows PECOFF, ELF, and Mac OSX MACHO binary file formats (32b
and 64b). These allow Intel® XED to be used as a simple
disassembler. The Intel® XED disassembler supports three output formats:
Intel, ATT SYSV, and a more detailed internal format describing
all resources read and written. The Intel® XED command line tool
example can be linked with libelf/libdwarf on Linux and with
dbghelp.dll on Microsoft Windows to access symbol information
in binaries. The command line tool can also emit (graphviz)
"dot" graphs to show register dependencies between instructions.
<p> When required, Intel® XED can be built without the encoder or
the decoder to reduce the code/data footprint. The
code in the Intel® XED library is written in C and is partially
generated from tables using Python scripts at build time. Intel® XED
is designed for embedding and has a minimal set of simple
external dependencies. Intel® XED requires only six simple external
library functions (like memcmp and memset). The libxed library
makes no system calls and allocates no memory. It is
multithread-safe after the one-time initialization of the tables.
<UL>
<LI> <A HREF="https://github.com/intelxed">Repositories</A>
<LI> <A HREF="ref-manual">XED API reference manual</A>
<LI> <A HREF="build-manual">XED building reference manual</A>
<LI> <A HREF="mbuild">mbuild reference manual</A>
</UL>
<HR>
<SCRIPT LANGUAGE="JavaScript">
<!--
document.write("Last updated: ");
document.write(document.lastModified);
// -->
</SCRIPT>
<HR>
</BODY>
</HTML>