sig
type assembly
type index
type label = string
type reg =
R0
| R1
| R2
| R3
| R4
| R5
| R6
| R7
| R8
| R9
| R10
| R11
| R12
| SP
| LR
| PC
type operand = Imm of int | Reg of Arm.reg
type cond = EQ | NE | GE | GT | LE | LT
val ix : Arm.operand -> Arm.index
val ix_lsl : Arm.operand -> int -> Arm.index
val noop : Arm.assembly
val seq : Arm.assembly -> Arm.assembly -> Arm.assembly
val concat : Arm.assembly list -> Arm.assembly
val comment : string -> Arm.assembly
val label : string -> Arm.assembly
val mov : ?cond:Arm.cond -> Arm.reg -> Arm.operand -> Arm.assembly
val ldr :
?cond:Arm.cond -> ?index:Arm.index -> Arm.reg -> Arm.reg -> Arm.assembly
val str :
?cond:Arm.cond ->
?index:Arm.index -> Arm.operand -> Arm.reg -> Arm.assembly
val cmp : ?cond:Arm.cond -> Arm.operand -> Arm.operand -> Arm.assembly
val sub :
?cond:Arm.cond -> Arm.reg -> Arm.operand -> Arm.operand -> Arm.assembly
val add :
?cond:Arm.cond -> Arm.reg -> Arm.operand -> Arm.operand -> Arm.assembly
val mul :
?cond:Arm.cond -> Arm.reg -> Arm.operand -> Arm.operand -> Arm.assembly
val adr : ?cond:Arm.cond -> Arm.reg -> Arm.label -> Arm.assembly
val push : Arm.operand -> Arm.assembly
val pop : Arm.reg -> Arm.assembly
val bl : ?cond:Arm.cond -> Arm.label -> Arm.assembly
val b : ?cond:Arm.cond -> Arm.label -> Arm.assembly
val bx : ?cond:Arm.cond -> Arm.reg -> Arm.assembly
val string_to_reg : string -> Arm.reg
val reg_index : Arm.reg -> int
val string_of_assembly : Arm.assembly -> string
end