module X86Types: sig
.. end
The X86 machine language
Register sets
type
reg8 =
| |
AL |
| |
CL |
| |
DL |
| |
BL |
| |
AH |
| |
CH |
| |
DH |
| |
BH |
General-purpose 8-bit registers
type
reg16 =
| |
AX |
| |
CX |
| |
DX |
| |
BX |
| |
SP |
| |
BP |
| |
SI |
| |
DI |
General-purpose 16-bit registers
type
reg32 =
| |
EAX |
| |
ECX |
| |
EDX |
| |
EBX |
| |
ESP |
| |
EBP |
| |
ESI |
| |
EDI |
General-purpose 32-bit registers
val nRegs32 : int
Number of 32-bit registers
type
segment_reg =
| |
ES |
| |
CS |
| |
SS |
| |
DS |
| |
FS |
| |
GS |
Segment registers
type
float_reg =
| |
ST0 |
| |
ST1 |
| |
ST2 |
| |
ST3 |
| |
ST4 |
| |
ST5 |
| |
ST6 |
| |
ST7 |
Floating-point registers
type
mmx_reg =
| |
MM0 |
| |
MM1 |
| |
MM2 |
| |
MM3 |
| |
MM4 |
| |
MM5 |
| |
MM6 |
| |
MM7 |
MMX registers
type
control_reg =
Control registers
type
debug_reg =
| |
DR0 |
| |
DR1 |
| |
DR2 |
| |
DR3 |
| |
DR6 |
| |
DR7 |
Debug registers
type
test_reg =
| |
TR3 |
| |
TR4 |
| |
TR5 |
| |
TR6 |
| |
TR7 |
Test registers
Flags
Condition codes
type
flag =
| |
ID |
| |
VIP |
| |
VIF |
| |
AC |
| |
VM |
| |
RF |
| |
NT |
| |
IOPL |
| |
OF |
| |
DF |
| |
IF_flag |
| |
TF |
| |
SF |
| |
ZF |
| |
AF |
| |
PF |
| |
CF |
Flags
type
condition =
| |
O |
| |
B |
| |
Z |
| |
BE |
| |
S |
| |
P |
| |
L |
| |
LE |
Basic conditions
type ('a, 'b)
prod =
A normal type for pairs, since Coq extraction can't seem to produce code
that uses built-in tuple types.
type
cc = (bool, condition) prod
A condition code is a pair of a basic condition and a boolean indicating
whether that condition is true.
val nCcs : int
Number of distinct condition codes
SSE
type
sse =
| |
SseEQ |
| |
SseLT |
| |
SseLE |
| |
SseUNORD |
| |
SseNEQ |
| |
SseNLT |
| |
SseNLE |
| |
SseORD |
SSE tests
Addresses
type
scale =
| |
Scale1 |
| |
Scale2 |
| |
Scale4 |
| |
Scale8 |
Scales for integer operations
type
address = {
}
The memory address format supported by the machine language
Operands
type 'a
genop =
| |
Imm of int64 |
| |
Reg of 'a |
| |
Address of address |
Generic instruction operands, indexed by the relevant register set
type
genop32 = reg32 genop
type
genop8 = reg8 genop
Specializations to particular register sets
Operations
type
arith_op =
Arithmetic operations
type
shift_op =
Bitwise shift operations
Instructions
type
instr =
The actual instructions.
These follow the standard x86 instruction set.