-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlowlevel.cpp
More file actions
125 lines (123 loc) · 2.26 KB
/
lowlevel.cpp
File metadata and controls
125 lines (123 loc) · 2.26 KB
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <cassert>
#include "lowlevel.h"
const char *lowlevel_opcode_to_str(LowLevelOpcode opcode) {
switch (opcode) {
case MINS_NOP:
return "nop";
case MINS_MOVB:
return "movb";
case MINS_MOVW:
return "movw";
case MINS_MOVL:
return "movl";
case MINS_MOVQ:
return "movq";
case MINS_ADDB:
return "addb";
case MINS_ADDW:
return "addw";
case MINS_ADDL:
return "addl";
case MINS_ADDQ:
return "addq";
case MINS_SUBB:
return "subb";
case MINS_SUBW:
return "subw";
case MINS_SUBL:
return "subl";
case MINS_SUBQ:
return "subq";
case MINS_LEAQ:
return "leaq";
case MINS_JMP:
return "jmp";
case MINS_JE:
return "je";
case MINS_JNE:
return "jne";
case MINS_JL:
return "jl";
case MINS_JLE:
return "jle";
case MINS_JG:
return "jg";
case MINS_JGE:
return "jge";
case MINS_JB:
return "jb";
case MINS_JBE:
return "jbe";
case MINS_JA:
return "ja";
case MINS_JAE:
return "jae";
case MINS_CMPB:
return "cmpb";
case MINS_CMPW:
return "cmpw";
case MINS_CMPL:
return "cmpl";
case MINS_CMPQ:
return "cmpq";
case MINS_CALL:
return "call";
case MINS_IMULL:
return "imull";
case MINS_IMULQ:
return "imulq";
case MINS_IDIVL:
return "idivl";
case MINS_IDIVQ:
return "idivq";
case MINS_CDQ:
return "cdq";
case MINS_CQTO:
return "cqto";
case MINS_PUSHQ:
return "pushq";
case MINS_POPQ:
return "popq";
case MINS_RET:
return "ret";
case MINS_MOVSBW:
return "movsbw";
case MINS_MOVSBL:
return "movsbl";
case MINS_MOVSBQ:
return "movsbq";
case MINS_MOVSWL:
return "movswl";
case MINS_MOVSWQ:
return "movswq";
case MINS_MOVSLQ:
return "movslq";
case MINS_MOVZBW:
return "movzbw";
case MINS_MOVZBL:
return "movzbl";
case MINS_MOVZBQ:
return "movzbq";
case MINS_MOVZWL:
return "movzwl";
case MINS_MOVZWQ:
return "movzwq";
case MINS_MOVZLQ:
return "movzlq";
case MINS_SETL:
return "setl";
case MINS_SETLE:
return "setle";
case MINS_SETG:
return "setg";
case MINS_SETGE:
return "setge";
case MINS_SETE:
return "sete";
case MINS_SETNE:
return "setne";
default:
assert(false);
return nullptr;
}
}