OSDN Git Service

定数展開の仕様を変更, ROM の前詰め、後詰めを設定可能
[unagi/old-svn-converted.git] / client / trunk / syntax.h
1 //included from script.c only
2 struct script_syntax{
3         const char *name;
4         int script_opcode;
5         int permittion;
6         int argc, compare;
7         const int *argv_type;
8 };
9 enum{
10         SYNTAX_ARGVTYPE_NULL,
11         SYNTAX_ARGVTYPE_VALUE,
12         SYNTAX_ARGVTYPE_HV,
13         SYNTAX_ARGVTYPE_EXPRESSION,
14         SYNTAX_ARGVTYPE_VARIABLE,
15         SYNTAX_ARGVTYPE_CONSTANT,
16         SYNTAX_ARGVTYPE_TRANSTYPE
17 };
18 enum{
19         SYNTAX_COMPARE_EQ,
20         SYNTAX_COMPARE_GT
21 };
22 enum{
23         SYNTAX_ARGV_TYPE_NUM = 4
24 };
25 enum{
26         SCRIPT_OPCODE_MAPPER,
27         SCRIPT_OPCODE_MIRROR,
28         SCRIPT_OPCODE_CPU_ROMSIZE,
29         SCRIPT_OPCODE_CPU_RAMSIZE,
30         SCRIPT_OPCODE_CPU_FLASHSIZE,
31         SCRIPT_OPCODE_PPU_ROMSIZE,
32         SCRIPT_OPCODE_PPU_FLASHSIZE,
33         SCRIPT_OPCODE_DUMP_START,
34         SCRIPT_OPCODE_CPU_COMMAND,
35         SCRIPT_OPCODE_CPU_READ,
36         SCRIPT_OPCODE_CPU_WRITE,
37         SCRIPT_OPCODE_CPU_RAMRW,
38         SCRIPT_OPCODE_CPU_PROGRAM,
39         SCRIPT_OPCODE_PPU_COMMAND,
40         SCRIPT_OPCODE_PPU_RAMFIND,
41         SCRIPT_OPCODE_PPU_SRAMTEST,
42         SCRIPT_OPCODE_PPU_READ,
43         SCRIPT_OPCODE_PPU_WRITE,
44         SCRIPT_OPCODE_PPU_PROGRAM,
45         SCRIPT_OPCODE_STEP_START,
46         SCRIPT_OPCODE_STEP_END,
47 //      SCRIPT_OPCODE_WAIT,
48         SCRIPT_OPCODE_DUMP_END,
49         SCRIPT_OPCODE_COMMENT,
50         SCRIPT_OPCODE_NUM
51 };
52 enum{
53         PERMITTION_ROM_DUMP = 1 << MODE_ROM_DUMP,
54         PERMITTION_RAM_READ = 1 << MODE_RAM_READ,
55         PERMITTION_RAM_WRITE = 1 << MODE_RAM_WRITE,
56         PERMITTION_ROM_PROGRAM = 1 << MODE_ROM_PROGRAM,
57         PERMITTION_ALL = 0xffff
58 };
59 static const char OPSTR_CPU_ROMSIZE[] = "CPU_ROMSIZE";
60 static const char OPSTR_CPU_RAMSIZE[] = "CPU_RAMSIZE";
61 static const char OPSTR_CPU_FLASHSIZE[] = "CPU_FLASHSIZE";
62 static const char OPSTR_PPU_ROMSIZE[] = "PPU_ROMSIZE";
63 static const char OPSTR_PPU_FLASHSIZE[] = "PPU_FLASHSIZE";
64 static const char OPSTR_CPU_RAMRW[] = "CPU_RAMRW";
65 static const int ARGV_TYPE_VALUE_ONLY[SYNTAX_ARGV_TYPE_NUM] = {
66         SYNTAX_ARGVTYPE_VALUE, SYNTAX_ARGVTYPE_NULL,
67         SYNTAX_ARGVTYPE_NULL, SYNTAX_ARGVTYPE_NULL
68 };
69 static const int ARGV_TYPE_HV[SYNTAX_ARGV_TYPE_NUM] = {
70         SYNTAX_ARGVTYPE_HV, SYNTAX_ARGVTYPE_NULL,
71         SYNTAX_ARGVTYPE_NULL, SYNTAX_ARGVTYPE_NULL
72 };
73 static const int ARGV_TYPE_NULL[SYNTAX_ARGV_TYPE_NUM] = {
74         SYNTAX_ARGVTYPE_NULL, SYNTAX_ARGVTYPE_NULL,
75         SYNTAX_ARGVTYPE_NULL, SYNTAX_ARGVTYPE_NULL
76 };
77 static const int ARGV_TYPE_ADDRESS_EXPRESSION[SYNTAX_ARGV_TYPE_NUM] = {
78         SYNTAX_ARGVTYPE_VALUE,
79         SYNTAX_ARGVTYPE_EXPRESSION, SYNTAX_ARGVTYPE_EXPRESSION, SYNTAX_ARGVTYPE_EXPRESSION
80 };
81 static const int ARGV_TYPE_ADDRESS_LENGTH[SYNTAX_ARGV_TYPE_NUM] = {
82         SYNTAX_ARGVTYPE_VALUE, SYNTAX_ARGVTYPE_VALUE,
83         SYNTAX_ARGVTYPE_NULL, SYNTAX_ARGVTYPE_NULL
84 };
85 static const int ARGV_TYPE_STEP_START[SYNTAX_ARGV_TYPE_NUM] = {
86         SYNTAX_ARGVTYPE_VARIABLE, SYNTAX_ARGVTYPE_CONSTANT,
87         SYNTAX_ARGVTYPE_CONSTANT, SYNTAX_ARGVTYPE_VALUE
88 };
89 static const int ARGV_TYPE_ADDRESS_COMMAND[SYNTAX_ARGV_TYPE_NUM] = {
90         SYNTAX_ARGVTYPE_VALUE, SYNTAX_ARGVTYPE_VALUE,
91         SYNTAX_ARGVTYPE_VALUE, SYNTAX_ARGVTYPE_NULL
92 };
93 static const int ARGV_TYPE_FLASHSIZE[SYNTAX_ARGV_TYPE_NUM] = {
94         SYNTAX_ARGVTYPE_VALUE, SYNTAX_ARGVTYPE_TRANSTYPE,
95         SYNTAX_ARGVTYPE_VALUE, SYNTAX_ARGVTYPE_VALUE
96 };
97 static const struct script_syntax SCRIPT_SYNTAX[] = {
98         {
99                 name: "MAPPER",
100                 script_opcode: SCRIPT_OPCODE_MAPPER,
101                 permittion: PERMITTION_ROM_DUMP | PERMITTION_ROM_PROGRAM,
102                 argc: 1, compare: SYNTAX_COMPARE_EQ,
103                 argv_type: ARGV_TYPE_VALUE_ONLY
104         },{
105                 name: "MIRROR",
106                 script_opcode: SCRIPT_OPCODE_MIRROR,
107                 permittion: PERMITTION_ROM_DUMP,
108                 argc: 1, compare: SYNTAX_COMPARE_EQ,
109                 argv_type: ARGV_TYPE_HV
110         },{
111                 name: OPSTR_CPU_ROMSIZE,
112                 script_opcode: SCRIPT_OPCODE_CPU_ROMSIZE,
113                 permittion: PERMITTION_ROM_DUMP,
114                 argc: 1, compare: SYNTAX_COMPARE_EQ,
115                 argv_type: ARGV_TYPE_VALUE_ONLY
116         },{
117                 name: OPSTR_CPU_RAMSIZE,
118                 script_opcode: SCRIPT_OPCODE_CPU_RAMSIZE,
119                 permittion: PERMITTION_RAM_READ | PERMITTION_RAM_WRITE,
120                 argc: 1, compare: SYNTAX_COMPARE_EQ,
121                 argv_type: ARGV_TYPE_VALUE_ONLY
122         },{
123                 name: OPSTR_CPU_FLASHSIZE,
124                 script_opcode: SCRIPT_OPCODE_CPU_FLASHSIZE,
125                 permittion: PERMITTION_ROM_PROGRAM,
126                 argc: 4, compare: SYNTAX_COMPARE_EQ,
127                 argv_type: ARGV_TYPE_FLASHSIZE
128         },{
129                 name: OPSTR_PPU_ROMSIZE,
130                 script_opcode: SCRIPT_OPCODE_PPU_ROMSIZE,
131                 permittion: PERMITTION_ROM_DUMP,
132                 argc: 1, compare: SYNTAX_COMPARE_EQ,
133                 argv_type: ARGV_TYPE_VALUE_ONLY
134         },{
135                 name: OPSTR_PPU_FLASHSIZE,
136                 script_opcode: SCRIPT_OPCODE_PPU_FLASHSIZE,
137                 permittion: PERMITTION_ROM_PROGRAM,
138                 argc: 4, compare: SYNTAX_COMPARE_EQ,
139                 argv_type: ARGV_TYPE_FLASHSIZE
140         },{
141                 name: "CPU_COMMAND",
142                 script_opcode: SCRIPT_OPCODE_CPU_COMMAND,
143                 permittion: PERMITTION_ROM_PROGRAM,
144                 argc:3, compare: SYNTAX_COMPARE_EQ,
145                 argv_type: ARGV_TYPE_ADDRESS_COMMAND
146         },{
147                 name: "PPU_COMMAND",
148                 script_opcode: SCRIPT_OPCODE_PPU_COMMAND,
149                 permittion: PERMITTION_ROM_PROGRAM,
150                 argc:3, compare: SYNTAX_COMPARE_EQ,
151                 argv_type: ARGV_TYPE_ADDRESS_COMMAND
152         },{
153                 name: "DUMP_START",
154                 script_opcode: SCRIPT_OPCODE_DUMP_START,
155                 permittion: PERMITTION_ALL,
156                 argc: 0, compare: SYNTAX_COMPARE_EQ,
157                 argv_type: ARGV_TYPE_NULL
158         },{
159                 name: "CPU_READ",
160                 script_opcode: SCRIPT_OPCODE_CPU_READ,
161                 permittion: PERMITTION_ROM_DUMP,
162                 argc: 2, compare: SYNTAX_COMPARE_EQ,
163                 argv_type: ARGV_TYPE_ADDRESS_LENGTH
164         },{
165                 name: "CPU_WRITE",
166                 script_opcode: SCRIPT_OPCODE_CPU_WRITE,
167                 permittion: PERMITTION_ALL,
168                 argc: 2, compare: SYNTAX_COMPARE_GT,
169                 argv_type: ARGV_TYPE_ADDRESS_EXPRESSION
170         },{
171                 name: OPSTR_CPU_RAMRW,
172                 script_opcode: SCRIPT_OPCODE_CPU_RAMRW,
173                 permittion: PERMITTION_RAM_READ | PERMITTION_RAM_WRITE,
174                 argc: 2, compare: SYNTAX_COMPARE_EQ,
175                 argv_type: ARGV_TYPE_ADDRESS_LENGTH
176         },{
177                 name: "CPU_PROGRAM",
178                 script_opcode: SCRIPT_OPCODE_CPU_PROGRAM,
179                 permittion: PERMITTION_ROM_PROGRAM,
180                 argc: 2, compare: SYNTAX_COMPARE_EQ,
181                 argv_type: ARGV_TYPE_ADDRESS_LENGTH
182         },{
183                 name: "PPU_RAMFIND",
184                 script_opcode: SCRIPT_OPCODE_PPU_RAMFIND,
185                 permittion: PERMITTION_ROM_DUMP,
186                 argc: 0, compare: SYNTAX_COMPARE_EQ,
187                 argv_type: ARGV_TYPE_NULL
188         },{
189                 name: "PPU_SRAMTEST",
190                 script_opcode: SCRIPT_OPCODE_PPU_SRAMTEST,
191                 permittion: PERMITTION_ROM_DUMP,
192                 argc: 2, compare: SYNTAX_COMPARE_EQ,
193                 argv_type: ARGV_TYPE_ADDRESS_LENGTH
194         },{
195                 name: "PPU_READ",
196                 script_opcode: SCRIPT_OPCODE_PPU_READ,
197                 permittion: PERMITTION_ROM_DUMP,
198                 argc: 2, compare: SYNTAX_COMPARE_EQ,
199                 argv_type: ARGV_TYPE_ADDRESS_LENGTH
200         },
201 #if DEBUG==1
202         {
203                 name: "PPU_WRITE",
204                 script_opcode: SCRIPT_OPCODE_PPU_WRITE,
205                 permittion: PERMITTION_ROM_DUMP | PERMITTION_ROM_PROGRAM,
206                 argc: 2, compare: SYNTAX_COMPARE_GT,
207                 argv_type: ARGV_TYPE_ADDRESS_EXPRESSION
208         },
209 #endif
210         {
211                 name: "PPU_PROGRAM",
212                 script_opcode: SCRIPT_OPCODE_PPU_PROGRAM,
213                 permittion: PERMITTION_ROM_PROGRAM,
214                 argc: 2, compare: SYNTAX_COMPARE_EQ,
215                 argv_type: ARGV_TYPE_ADDRESS_LENGTH,
216         },
217         {
218                 name: "STEP_START",
219                 script_opcode: SCRIPT_OPCODE_STEP_START,
220                 permittion: PERMITTION_ALL,
221                 argc: 4, compare: SYNTAX_COMPARE_EQ,
222                 argv_type: ARGV_TYPE_STEP_START
223         },{
224                 name: "STEP_END",
225                 script_opcode: SCRIPT_OPCODE_STEP_END,
226                 permittion: PERMITTION_ALL,
227                 argc: 0, compare: SYNTAX_COMPARE_EQ,
228                 argv_type: ARGV_TYPE_NULL
229         },
230 #if 0
231         {
232                 name: "WAIT",
233                 script_opcode: SCRIPT_OPCODE_WAIT,
234                 permittion: PERMITTION_ROM_PROGRAM,
235                 argc: 1, compare: SYNTAX_COMPARE_EQ,
236                 argv_type: ARGV_TYPE_VALUE_ONLY
237         },
238 #endif
239         {
240                 name: "DUMP_END",
241                 script_opcode: SCRIPT_OPCODE_DUMP_END,
242                 permittion: PERMITTION_ALL,
243                 argc: 0, compare: SYNTAX_COMPARE_EQ,
244                 argv_type: ARGV_TYPE_NULL
245         }
246 };
247
248 static const char *STR_TRANSTYPE[] = {
249         "EMPTY", "TOP", "BOTTOM", "FULL", NULL
250 };
251
252 static const char *STR_CONSTANTNAME[] = {
253         "C_START", "C_END",
254         "P_START", "P_END", NULL
255 };