+ type func = Ast.ident * insn list
+
+ (* gives name of reg *)
+ val regnames =
+ [ (EAX, ("al", "ax", "eax", "rax")),
+ (EBX, ("bl", "bx", "ebx", "rbx")),
+ (ECX, ("cl", "cx", "ecx", "rcx")),
+ (EDX, ("dl", "dx", "edx", "rdx")),
+ (ESI, ("sil", "si", "esi", "rsi")),
+ (EDI, ("dil", "di", "edi", "rdi")),
+ (EBP, ("bpl", "bp", "ebp", "rbp")),
+ (RSP, ("spl", "sp", "esp", "rsp")),
+ (R8D, ("r8b", "r8w", "r8d", "r8")),
+ (R9D, ("r9b", "r9w", "r9d", "r9")),
+ (R10D, ("r10b", "r10w", "r10d", "r10")),
+ (R11D, ("r11b", "r11w", "r11d", "r11")),
+ (R12D, ("r12b", "r12w", "r12d", "r12")),
+ (R13D, ("r13b", "r13w", "r13d", "r13")),
+ (R14D, ("r14b", "r14w", "r14d", "r14")),
+ (R15D, ("r15b", "r15w", "r15d", "r15")) ];
+
+ fun regname sz reg =
+ let
+ val (n, (b, w, l, q)) = valOf (List.find (fn (r, _) => r = reg) regnames)
+ in
+ case sz
+ of Byte => b
+ | Word => w
+ | Long => l
+ | Qword => q
+ end
+
+ fun ccname E = "e"
+ | ccname NE = "ne"
+ | ccname GE = "ge"
+ | ccname LE = "le"
+ | ccname G = "g"
+ | ccname L = "l"
+
+ (* gives number (color) associated with reg *)