Module X86_ast
Structured representation of Intel assembly language (32 and 64 bit).
type constant = | Const of int64| ConstThis| ConstLabel of string| ConstLabelOffset of string * int| ConstAdd of X86_ast.constant * X86_ast.constant| ConstSub of X86_ast.constant * X86_ast.constant
type addr = {arch : X86_ast.arch;typ : X86_ast.data_type;idx : X86_ast.reg_idx;scale : int;base : X86_ast.reg64 option;sym : string option;displ : int;
}Addressing modes: displ + sym + base + idx * scale (if scale = 0, idx is ignored and base must be None)
type arg = | Imm of int64(*Operand is an immediate constant integer
*)| Sym of string(*Address of a symbol (absolute address except for call/jmp target where it is interpreted as a relative displacement
*)| Reg8L of X86_ast.reg64| Reg8H of X86_ast.reg8h| Reg16 of X86_ast.reg64| Reg32 of X86_ast.reg64| Reg64 of X86_ast.reg64| Regf of X86_ast.regf| Mem of X86_ast.addr| Mem64_RIP of X86_ast.data_type * string * int
type instruction = | ADD of X86_ast.arg * X86_ast.arg| ADC of X86_ast.arg * X86_ast.arg| AND of X86_ast.arg * X86_ast.arg| BSF of X86_ast.arg * X86_ast.arg| BSR of X86_ast.arg * X86_ast.arg| BSWAP of X86_ast.arg| CALL of X86_ast.arg| CDQ| CLDEMOTE of X86_ast.arg| CMOV of X86_ast.condition * X86_ast.arg * X86_ast.arg| CMP of X86_ast.arg * X86_ast.arg| CQO| DEC of X86_ast.arg| HLT| IDIV of X86_ast.arg| IMUL of X86_ast.arg * X86_ast.arg option| MUL of X86_ast.arg| INC of X86_ast.arg| J of X86_ast.condition * X86_ast.arg| JMP of X86_ast.arg| LEA of X86_ast.arg * X86_ast.arg| LOCK_CMPXCHG of X86_ast.arg * X86_ast.arg| LOCK_XADD of X86_ast.arg * X86_ast.arg| LOCK_ADD of X86_ast.arg * X86_ast.arg| LOCK_SUB of X86_ast.arg * X86_ast.arg| LOCK_AND of X86_ast.arg * X86_ast.arg| LOCK_OR of X86_ast.arg * X86_ast.arg| LOCK_XOR of X86_ast.arg * X86_ast.arg| LEAVE| MOV of X86_ast.arg * X86_ast.arg| MOVSX of X86_ast.arg * X86_ast.arg| MOVSXD of X86_ast.arg * X86_ast.arg| MOVZX of X86_ast.arg * X86_ast.arg| NEG of X86_ast.arg| NOP| OR of X86_ast.arg * X86_ast.arg| PAUSE| POP of X86_ast.arg| PREFETCH of bool * X86_ast.prefetch_temporal_locality_hint * X86_ast.arg| PUSH of X86_ast.arg| RDTSC| RDPMC| LFENCE| SFENCE| MFENCE| RET| SAL of X86_ast.arg * X86_ast.arg| SAR of X86_ast.arg * X86_ast.arg| SET of X86_ast.condition * X86_ast.arg| SHR of X86_ast.arg * X86_ast.arg| SUB of X86_ast.arg * X86_ast.arg| SBB of X86_ast.arg * X86_ast.arg| TEST of X86_ast.arg * X86_ast.arg| XCHG of X86_ast.arg * X86_ast.arg| XOR of X86_ast.arg * X86_ast.arg| SIMD of Amd64_simd_instrs.instr * X86_ast.arg array
type asm_program = X86_ast.asm_line list