File: pretty.hgen

package info (click to toggle)
sail-ocaml 0.19.1%2Bdfsg5-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 18,008 kB
  • sloc: ml: 75,941; ansic: 8,848; python: 1,342; exp: 560; sh: 474; makefile: 218; cpp: 36
file content (50 lines) | stat: -rw-r--r-- 2,494 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
| `X86BINOP (locked, bop, sz, dst_src) ->
    pp_locked locked ^ pp_x86Binop bop ^ pp_x86Size sz ^ " " ^ pp_x86Dest_src (sz, dst_src)
| `X86BITOP (locked, bop, sz, bo) ->
    pp_locked locked ^ pp_x86Bitop bop ^ pp_x86Size sz ^ " " ^ pp_x86Bit_offset (sz, bo)
| `X86CALL (Imm i) -> "call " ^ " $" ^ bit64_to_string i
| `X86CALL (Rm rm) -> "call " ^ pp_x86Rm (X86S64, rm)
| `X86CLC -> "clc"
| `X86CMC -> "cmc"
| `X86CMPXCHG (locked, sz, rm, r) ->
    sprintf "%scmpxchg%s %s, %s"
      (pp_locked locked) (pp_x86Size sz) (pp_size_reg sz r) (pp_x86Rm (sz, rm))
| `X86DIV (sz, rm) -> "div" ^ pp_x86Size sz ^ " " ^ pp_x86Rm (sz, rm)
| `X86JCC (X86ALWAYS, i) -> "jmp " ^ bit64_to_string i
| `X86JCC (cnd, i) -> "j" ^ pp_x86Cond cnd ^ " " ^ bit64_to_string i
| `X86JMP (rm) -> "jmp " ^ pp_x86Rm(X86S64, rm)
| `X86LEA (sz, dst_src) ->
    "lea" ^ (pp_x86Size sz) ^ " " ^ pp_x86Dest_src (sz, dst_src)
| `X86LEAVE -> "leave"
| `X86LOOP (cnd, i) -> "loop" ^ pp_x86Cond cnd ^ " " ^ bit64_to_string i
| `X86MFENCE -> "mfence"
| `X86MONOP (locked, mop, sz, rm) ->
    pp_x86Monop mop ^ pp_x86Size sz ^ " " ^ pp_x86Rm (sz, rm)
| `X86MOV (X86ALWAYS, sz, dst_src) ->
    "mov" ^ pp_x86Size sz ^ " " ^ pp_x86Dest_src (sz, dst_src)
| `X86MOV (cnd, sz, dst_src) ->
    "cmov" ^ pp_x86Cond cnd ^ pp_x86Size sz ^ " " ^ pp_x86Dest_src (sz, dst_src)
| `X86MOVSX (sz1, R_rm (r, rm), sz2) ->
    "movs" ^ pp_x86Size sz1 ^ pp_x86Size sz2 ^ " " ^ pp_x86Rm (sz1, rm) ^
    ", " ^ pp_size_reg sz2 r
| `X86MOVSX (sz1, _, sz2) -> failwith "bad movsx instruction"
| `X86MOVZX (sz1, R_rm (r, rm), sz2) ->
    "movz" ^ pp_x86Size sz1 ^ pp_x86Size sz2 ^ " " ^ pp_x86Rm (sz1, rm) ^
    ", " ^ pp_size_reg sz2 r
| `X86MOVZX (sz1, _, sz2) -> failwith "bad movzx instruction"
| `X86MUL (sz, rm) -> "mul" ^ pp_x86Size sz ^ " " ^ pp_x86Rm (sz, rm)
| `X86NOP -> "nop"
| `X86POP rm -> "pop " ^ (pp_x86Rm (X86S64, rm))
| `X86PUSH (Imm i) -> "push $" ^ bit64_to_string i
| `X86PUSH (Rm rm) -> "push " ^ pp_x86Rm (X86S64, rm)
| `X86RET i -> "ret " ^ bit64_to_string i
| `X86SET (cnd, b, rm) -> "set" ^ pp_x86Cond cnd ^ " " ^ pp_x86Rm (X86S8 b, rm)
| `X86STC -> "stc"
| `X86XADD (locked, sz, rm, r) ->
    sprintf "%s xadd%s %s, %s"
      (pp_locked locked) (pp_x86Size sz) (pp_size_reg sz r) (pp_x86Rm (sz, rm))
| `X86XCHG (locked, sz, rm, r) ->
    sprintf "%sxchg%s %s, %s"
      (pp_locked locked) (pp_x86Size sz) (pp_size_reg sz r) (pp_x86Rm (sz, rm))
| `X86ThreadStart               -> "start"
| `X86StopFetching              -> "hlt"