Module X86_ast
Structured representation of Intel assembly language (32 and 64 bit).
type condition=|L|GE|LE|G|B|AE|BE|A|E|NE|O|NO|S|NS|P|NPtype rounding=|RoundUp|RoundDown|RoundNearest|RoundTruncatetype constant=|Const of int64|ConstThis|ConstLabel of string|ConstAdd of constant * constant|ConstSub of constant * constanttype data_type=|NONE|REAL4|REAL8|BYTE|WORD|DWORD|QWORD|OWORD|NEAR|PROCtype reg64=|RAX|RBX|RCX|RDX|RSP|RBP|RSI|RDI|R8|R9|R10|R11|R12|R13|R14|R15type reg8h=|AH|BH|CH|DHtype registerf=|XMM of int|TOS|ST of inttype arch=|X64|X86type 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 int64Operand is an immediate constant integer
|Sym of stringAddress 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 * inttype 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 * argtype 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 * stringtype asm_program= asm_line list