sig
type 'a asm
type text = [ `text ] X86_64.asm
type data = [ `data ] X86_64.asm
type label = string
val nop : [> ] X86_64.asm
val ( ++ ) :
([< `data | `text ] as 'a) X86_64.asm -> 'a X86_64.asm -> 'a X86_64.asm
val inline : string -> [> ] X86_64.asm
type program = { text : X86_64.text; data : X86_64.data; }
val print_program : Stdlib.Format.formatter -> X86_64.program -> unit
val print_in_file : file:string -> X86_64.program -> unit
type size = [ `B | `L | `Q | `W ]
type 'size register
val rax : [ `Q ] X86_64.register
val rbx : [ `Q ] X86_64.register
val rcx : [ `Q ] X86_64.register
val rdx : [ `Q ] X86_64.register
val rsi : [ `Q ] X86_64.register
val rdi : [ `Q ] X86_64.register
val rbp : [ `Q ] X86_64.register
val rsp : [ `Q ] X86_64.register
val r8 : [ `Q ] X86_64.register
val r9 : [ `Q ] X86_64.register
val r10 : [ `Q ] X86_64.register
val r11 : [ `Q ] X86_64.register
val r12 : [ `Q ] X86_64.register
val r13 : [ `Q ] X86_64.register
val r14 : [ `Q ] X86_64.register
val r15 : [ `Q ] X86_64.register
val eax : [ `L ] X86_64.register
val ebx : [ `L ] X86_64.register
val ecx : [ `L ] X86_64.register
val edx : [ `L ] X86_64.register
val esi : [ `L ] X86_64.register
val edi : [ `L ] X86_64.register
val ebp : [ `L ] X86_64.register
val esp : [ `L ] X86_64.register
val r8d : [ `L ] X86_64.register
val r9d : [ `L ] X86_64.register
val r10d : [ `L ] X86_64.register
val r11d : [ `L ] X86_64.register
val r12d : [ `L ] X86_64.register
val r13d : [ `L ] X86_64.register
val r14d : [ `L ] X86_64.register
val r15d : [ `L ] X86_64.register
val ax : [ `W ] X86_64.register
val bx : [ `W ] X86_64.register
val cx : [ `W ] X86_64.register
val dx : [ `W ] X86_64.register
val si : [ `W ] X86_64.register
val di : [ `W ] X86_64.register
val bp : [ `W ] X86_64.register
val sp : [ `W ] X86_64.register
val r8w : [ `W ] X86_64.register
val r9w : [ `W ] X86_64.register
val r10w : [ `W ] X86_64.register
val r11w : [ `W ] X86_64.register
val r12w : [ `W ] X86_64.register
val r13w : [ `W ] X86_64.register
val r14w : [ `W ] X86_64.register
val r15w : [ `W ] X86_64.register
val al : [ `B ] X86_64.register
val bl : [ `B ] X86_64.register
val cl : [ `B ] X86_64.register
val dl : [ `B ] X86_64.register
val ah : [ `B ] X86_64.register
val bh : [ `B ] X86_64.register
val ch : [ `B ] X86_64.register
val dh : [ `B ] X86_64.register
val sil : [ `B ] X86_64.register
val dil : [ `B ] X86_64.register
val bpl : [ `B ] X86_64.register
val spl : [ `B ] X86_64.register
val r8b : [ `B ] X86_64.register
val r9b : [ `B ] X86_64.register
val r10b : [ `B ] X86_64.register
val r11b : [ `B ] X86_64.register
val r12b : [ `B ] X86_64.register
val r13b : [ `B ] X86_64.register
val r14b : [ `B ] X86_64.register
val r15b : [ `B ] X86_64.register
type 'size operand
val imm : int -> [> ] X86_64.operand
val imm32 : int32 -> [> ] X86_64.operand
val imm64 : int64 -> [> ] X86_64.operand
val reg : 'size X86_64.register -> 'size X86_64.operand
val ( !% ) : 'size X86_64.register -> 'size X86_64.operand
val ind :
?ofs:int ->
?index:'size1 X86_64.register ->
?scale:int -> 'size2 X86_64.register -> [> ] X86_64.operand
val lab : X86_64.label -> [> ] X86_64.operand
val ilab : X86_64.label -> [ `Q ] X86_64.operand
val movb : [ `B ] X86_64.operand -> [ `B ] X86_64.operand -> X86_64.text
val movw : [ `W ] X86_64.operand -> [ `W ] X86_64.operand -> X86_64.text
val movl : [ `L ] X86_64.operand -> [ `L ] X86_64.operand -> X86_64.text
val movq : [ `Q ] X86_64.operand -> [ `Q ] X86_64.operand -> X86_64.text
val movsbw : [ `B ] X86_64.operand -> [ `W ] X86_64.register -> X86_64.text
val movsbl : [ `B ] X86_64.operand -> [ `L ] X86_64.register -> X86_64.text
val movsbq : [ `B ] X86_64.operand -> [ `Q ] X86_64.register -> X86_64.text
val movswl : [ `W ] X86_64.operand -> [ `L ] X86_64.register -> X86_64.text
val movswq : [ `W ] X86_64.operand -> [ `Q ] X86_64.register -> X86_64.text
val movslq : [ `L ] X86_64.operand -> [ `Q ] X86_64.register -> X86_64.text
val movzbw : [ `B ] X86_64.operand -> [ `W ] X86_64.register -> X86_64.text
val movzbl : [ `B ] X86_64.operand -> [ `L ] X86_64.register -> X86_64.text
val movzbq : [ `B ] X86_64.operand -> [ `Q ] X86_64.register -> X86_64.text
val movzwl : [ `W ] X86_64.operand -> [ `L ] X86_64.register -> X86_64.text
val movzwq : [ `W ] X86_64.operand -> [ `Q ] X86_64.register -> X86_64.text
val movabsq :
[ `Q ] X86_64.operand -> [ `Q ] X86_64.register -> X86_64.text
val leab : [ `B ] X86_64.operand -> [ `B ] X86_64.register -> X86_64.text
val leaw : [ `W ] X86_64.operand -> [ `W ] X86_64.register -> X86_64.text
val leal : [ `L ] X86_64.operand -> [ `L ] X86_64.register -> X86_64.text
val leaq : [ `Q ] X86_64.operand -> [ `Q ] X86_64.register -> X86_64.text
val incb : [ `B ] X86_64.operand -> X86_64.text
val incw : [ `W ] X86_64.operand -> X86_64.text
val incl : [ `L ] X86_64.operand -> X86_64.text
val incq : [ `Q ] X86_64.operand -> X86_64.text
val decb : [ `B ] X86_64.operand -> X86_64.text
val decw : [ `W ] X86_64.operand -> X86_64.text
val decl : [ `L ] X86_64.operand -> X86_64.text
val decq : [ `Q ] X86_64.operand -> X86_64.text
val negb : [ `B ] X86_64.operand -> X86_64.text
val negw : [ `W ] X86_64.operand -> X86_64.text
val negl : [ `L ] X86_64.operand -> X86_64.text
val negq : [ `Q ] X86_64.operand -> X86_64.text
val addb : [ `B ] X86_64.operand -> [ `B ] X86_64.operand -> X86_64.text
val addw : [ `W ] X86_64.operand -> [ `W ] X86_64.operand -> X86_64.text
val addl : [ `L ] X86_64.operand -> [ `L ] X86_64.operand -> X86_64.text
val addq : [ `Q ] X86_64.operand -> [ `Q ] X86_64.operand -> X86_64.text
val subb : [ `B ] X86_64.operand -> [ `B ] X86_64.operand -> X86_64.text
val subw : [ `W ] X86_64.operand -> [ `W ] X86_64.operand -> X86_64.text
val subl : [ `L ] X86_64.operand -> [ `L ] X86_64.operand -> X86_64.text
val subq : [ `Q ] X86_64.operand -> [ `Q ] X86_64.operand -> X86_64.text
val imulw : [ `W ] X86_64.operand -> [ `W ] X86_64.operand -> X86_64.text
val imull : [ `L ] X86_64.operand -> [ `L ] X86_64.operand -> X86_64.text
val imulq : [ `Q ] X86_64.operand -> [ `Q ] X86_64.operand -> X86_64.text
val idivq : [ `Q ] X86_64.operand -> X86_64.text
val cqto : X86_64.text
val notb : [ `B ] X86_64.operand -> X86_64.text
val notw : [ `W ] X86_64.operand -> X86_64.text
val notl : [ `L ] X86_64.operand -> X86_64.text
val notq : [ `Q ] X86_64.operand -> X86_64.text
val andb : [ `B ] X86_64.operand -> [ `B ] X86_64.operand -> X86_64.text
val andw : [ `W ] X86_64.operand -> [ `W ] X86_64.operand -> X86_64.text
val andl : [ `L ] X86_64.operand -> [ `L ] X86_64.operand -> X86_64.text
val andq : [ `Q ] X86_64.operand -> [ `Q ] X86_64.operand -> X86_64.text
val orb : [ `B ] X86_64.operand -> [ `B ] X86_64.operand -> X86_64.text
val orw : [ `W ] X86_64.operand -> [ `W ] X86_64.operand -> X86_64.text
val orl : [ `L ] X86_64.operand -> [ `L ] X86_64.operand -> X86_64.text
val orq : [ `Q ] X86_64.operand -> [ `Q ] X86_64.operand -> X86_64.text
val xorb : [ `B ] X86_64.operand -> [ `B ] X86_64.operand -> X86_64.text
val xorw : [ `W ] X86_64.operand -> [ `W ] X86_64.operand -> X86_64.text
val xorl : [ `L ] X86_64.operand -> [ `L ] X86_64.operand -> X86_64.text
val xorq : [ `Q ] X86_64.operand -> [ `Q ] X86_64.operand -> X86_64.text
val shlb : [ `B ] X86_64.operand -> [ `B ] X86_64.operand -> X86_64.text
val shlw : [ `W ] X86_64.operand -> [ `W ] X86_64.operand -> X86_64.text
val shll : [ `L ] X86_64.operand -> [ `L ] X86_64.operand -> X86_64.text
val shlq : [ `Q ] X86_64.operand -> [ `Q ] X86_64.operand -> X86_64.text
val shrb : [ `B ] X86_64.operand -> [ `B ] X86_64.operand -> X86_64.text
val shrw : [ `W ] X86_64.operand -> [ `W ] X86_64.operand -> X86_64.text
val shrl : [ `L ] X86_64.operand -> [ `L ] X86_64.operand -> X86_64.text
val shrq : [ `Q ] X86_64.operand -> [ `Q ] X86_64.operand -> X86_64.text
val sarb : [ `B ] X86_64.operand -> [ `B ] X86_64.operand -> X86_64.text
val sarw : [ `W ] X86_64.operand -> [ `W ] X86_64.operand -> X86_64.text
val sarl : [ `L ] X86_64.operand -> [ `L ] X86_64.operand -> X86_64.text
val sarq : [ `Q ] X86_64.operand -> [ `Q ] X86_64.operand -> X86_64.text
val call : X86_64.label -> X86_64.text
val call_star : [ `Q ] X86_64.operand -> X86_64.text
val leave : X86_64.text
val ret : X86_64.text
val jmp : X86_64.label -> X86_64.text
val jmp_star : [ `Q ] X86_64.operand -> X86_64.text
val je : X86_64.label -> X86_64.text
val jz : X86_64.label -> X86_64.text
val jne : X86_64.label -> X86_64.text
val jnz : X86_64.label -> X86_64.text
val js : X86_64.label -> X86_64.text
val jns : X86_64.label -> X86_64.text
val jg : X86_64.label -> X86_64.text
val jge : X86_64.label -> X86_64.text
val jl : X86_64.label -> X86_64.text
val jle : X86_64.label -> X86_64.text
val ja : X86_64.label -> X86_64.text
val jae : X86_64.label -> X86_64.text
val jb : X86_64.label -> X86_64.text
val jbe : X86_64.label -> X86_64.text
val cmpb : [ `B ] X86_64.operand -> [ `B ] X86_64.operand -> X86_64.text
val cmpw : [ `W ] X86_64.operand -> [ `W ] X86_64.operand -> X86_64.text
val cmpl : [ `L ] X86_64.operand -> [ `L ] X86_64.operand -> X86_64.text
val cmpq : [ `Q ] X86_64.operand -> [ `Q ] X86_64.operand -> X86_64.text
val testb : [ `B ] X86_64.operand -> [ `B ] X86_64.operand -> X86_64.text
val testw : [ `W ] X86_64.operand -> [ `W ] X86_64.operand -> X86_64.text
val testl : [ `L ] X86_64.operand -> [ `L ] X86_64.operand -> X86_64.text
val testq : [ `Q ] X86_64.operand -> [ `Q ] X86_64.operand -> X86_64.text
val sete : [ `B ] X86_64.operand -> X86_64.text
val setne : [ `B ] X86_64.operand -> X86_64.text
val sets : [ `B ] X86_64.operand -> X86_64.text
val setns : [ `B ] X86_64.operand -> X86_64.text
val setg : [ `B ] X86_64.operand -> X86_64.text
val setge : [ `B ] X86_64.operand -> X86_64.text
val setl : [ `B ] X86_64.operand -> X86_64.text
val setle : [ `B ] X86_64.operand -> X86_64.text
val seta : [ `B ] X86_64.operand -> X86_64.text
val setae : [ `B ] X86_64.operand -> X86_64.text
val setb : [ `B ] X86_64.operand -> X86_64.text
val setbe : [ `B ] X86_64.operand -> X86_64.text
val pushq : [ `Q ] X86_64.operand -> X86_64.text
val popq : [ `Q ] X86_64.register -> X86_64.text
val label : X86_64.label -> [> ] X86_64.asm
val globl : X86_64.label -> [> ] X86_64.asm
val comment : string -> [> ] X86_64.asm
val string : string -> X86_64.data
val dbyte : int list -> X86_64.data
val dword : int list -> X86_64.data
val dint : int list -> X86_64.data
val dquad : int list -> X86_64.data
val address : X86_64.label list -> X86_64.data
val space : int -> X86_64.data
end