X86_ast
Structured representation of Intel assembly language (32 and 64 bit).
type addr = {
arch : arch;
typ : data_type;
idx : reg64;
scale : int;
base : 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 reg64
| Reg8H of reg8h
| Reg16 of reg64
| Reg32 of reg64
| Reg64 of reg64
| Regf of registerf
| Mem of addr
| Mem64_RIP of data_type * string * int
type instruction =
| ADD of arg * arg
| ADDSD of arg * arg
| AND of arg * arg
| ANDPD of arg * arg
| BSWAP of arg
| CALL of arg
| CDQ
| CMOV of condition * arg * arg
| CMP of arg * arg
| COMISD of arg * arg
| CQO
| CVTSD2SI of arg * arg
| CVTSD2SS of arg * arg
| CVTSI2SD of arg * arg
| CVTSS2SD of arg * arg
| CVTTSD2SI of arg * arg
| DEC of arg
| DIVSD of arg * arg
| FABS
| FADD of arg
| FADDP of arg * arg
| FCHS
| FCOMP of arg
| FCOMPP
| FCOS
| FDIV of arg
| FDIVP of arg * arg
| FDIVR of arg
| FDIVRP of arg * arg
| FILD of arg
| FISTP of arg
| FLD of arg
| FLD1
| FLDCW of arg
| FLDLG2
| FLDLN2
| FLDZ
| FMUL of arg
| FMULP of arg * arg
| FNSTCW of arg
| FNSTSW of arg
| FPATAN
| FPTAN
| FSIN
| FSQRT
| FSTP of arg
| FSUB of arg
| FSUBP of arg * arg
| FSUBR of arg
| FSUBRP of arg * arg
| FXCH of arg
| FYL2X
| HLT
| IDIV of arg
| IMUL of arg * arg option
| INC of arg
| J of condition * arg
| JMP of arg
| LEA of arg * arg
| LEAVE
| MOV of arg * arg
| MOVAPD of arg * arg
| MOVLPD of arg * arg
| MOVSD of arg * arg
| MOVSS of arg * arg
| MOVSX of arg * arg
| MOVSXD of arg * arg
| MOVZX of arg * arg
| MULSD of arg * arg
| NEG of arg
| NOP
| OR of arg * arg
| POP of arg
| PUSH of arg
| RET
| ROUNDSD of rounding * arg * arg
| SAL of arg * arg
| SAR of arg * arg
| SET of condition * arg
| SHR of arg * arg
| SQRTSD of arg * arg
| SUB of arg * arg
| SUBSD of arg * arg
| TEST of arg * arg
| UCOMISD of arg * arg
| XCHG of arg * arg
| XOR of arg * arg
| XORPD of arg * arg
type asm_line =
| Ins of instruction
| Align of bool * int
| Byte of constant
| Bytes of string
| Comment of string
| Global of string
| Long of constant
| NewLabel of string * data_type
| Quad of constant
| Section of string list * string option * string list
| Space of int
| Word of constant
| External of string * data_type
| Mode386
| Model of string
| Cfi_adjust_cfa_offset of int
| Cfi_endproc
| Cfi_startproc
| File of int * string
| Indirect_symbol of string
| Loc of int * int * int
| Private_extern of string
| Set of string * constant
| Size of string * constant
| Type of string * string
type asm_program = asm_line list