Mercurial > hg-old > index.cgi
comparison lwasm/instab.c @ 357:0cf4948d53b4
Checkpoint - adding actual cpu instructions
author | lost@starbug |
---|---|
date | Wed, 31 Mar 2010 20:12:20 -0600 |
parents | 7166254491ed |
children | cc154dc614fe |
comparison
equal
deleted
inserted
replaced
356:7166254491ed | 357:0cf4948d53b4 |
---|---|
29 // inherent | 29 // inherent |
30 extern PARSEFUNC(insn_parse_inh); | 30 extern PARSEFUNC(insn_parse_inh); |
31 #define insn_resolve_inh NULL | 31 #define insn_resolve_inh NULL |
32 extern EMITFUNC(insn_emit_inh); | 32 extern EMITFUNC(insn_emit_inh); |
33 | 33 |
34 // register to register | |
35 extern PARSEFUNC(insn_parse_rtor); | |
36 #define insn_resolve_rtor NULL | |
37 extern EMITFUNC(insn_emit_rtor); | |
38 | |
39 // TFM and variants | |
40 extern PARSEFUNC(insn_parse_tfmrtor); | |
41 #define insn_resolve_tfmrtor NULL | |
42 extern EMITFUNC(insn_emit_tfmrtor); | |
43 extern PARSEFUNC(insn_parse_tfm); | |
44 #define insn_resolve_tfm NULL | |
45 extern EMITFUNC(insn_emit_tfm); | |
46 | |
47 // register list | |
48 extern PARSEFUNC(insn_parse_rlist); | |
49 #define insn_resolve_rlist NULL | |
50 extern EMITFUNC(insn_emit_rlist); | |
51 | |
52 // indexed | |
53 extern PARSEFUNC(insn_parse_indexed); | |
54 extern RESOLVEFUNC(insn_resolve_indexed); | |
55 extern EMITFUNC(insn_emit_indexed); | |
56 | |
57 // generic 32 bit immediate | |
58 extern PARSEFUNC(insn_parse_gen32); | |
59 extern RESOLVEFUNC(insn_resolve_gen32); | |
60 extern EMITFUNC(insn_emit_gen32); | |
61 | |
62 // generic 16 bit immediate | |
63 extern PARSEFUNC(insn_parse_gen16); | |
64 extern RESOLVEFUNC(insn_resolve_gen16); | |
65 extern EMITFUNC(insn_emit_gen16); | |
66 | |
67 // generic 8 bit immediate | |
68 extern PARSEFUNC(insn_parse_gen8); | |
69 extern RESOLVEFUNC(insn_resolve_gen8); | |
70 extern EMITFUNC(insn_emit_gen8); | |
71 | |
72 // generic no immediate | |
73 extern PARSEFUNC(insn_parse_gen0); | |
74 extern RESOLVEFUNC(insn_resolve_gen0); | |
75 extern EMITFUNC(insn_emit_gen0); | |
76 | |
77 // logic memory | |
78 extern PARSEFUNC(insn_parse_logicmem); | |
79 extern RESOLVEFUNC(insn_resolve_logicmem); | |
80 extern EMITFUNC(insn_emit_logicmem); | |
81 | |
82 // logic memory | |
83 extern PARSEFUNC(insn_parse_imm8); | |
84 #define insn_resolve_imm8 NULL | |
85 extern EMITFUNC(insn_emit_imm8); | |
86 | |
87 // bit to bit ops | |
88 extern PARSEFUNC(insn_parse_bitbit); | |
89 #define insn_resolve_bitbit NULL | |
90 extern EMITFUNC(insn_emit_bitbit); | |
91 | |
92 // 8 bit relative | |
93 extern PARSEFUNC(insn_parse_rel8); | |
94 #define insn_resolve_rel8 NULL | |
95 extern EMITFUNC(insn_emit_rel8); | |
96 | |
97 // 16 bit relative | |
98 extern PARSEFUNC(insn_parse_rel16); | |
99 #define insn_resolve_rel16 NULL | |
100 extern EMITFUNC(insn_emit_rel16); | |
101 | |
34 // MACRO pseudo op | 102 // MACRO pseudo op |
35 extern PARSEFUNC(pseudo_parse_macro); | 103 extern PARSEFUNC(pseudo_parse_macro); |
36 #define pseudo_resolve_macro NULL | 104 #define pseudo_resolve_macro NULL |
37 #define pseudo_emit_macro NULL | 105 #define pseudo_emit_macro NULL |
38 | 106 |
213 extern RESOLVEFUNC(pseudo_resolve_align); | 281 extern RESOLVEFUNC(pseudo_resolve_align); |
214 extern EMITFUNC(pseudo_emit_align); | 282 extern EMITFUNC(pseudo_emit_align); |
215 | 283 |
216 instab_t instab[] = | 284 instab_t instab[] = |
217 { | 285 { |
218 /* | 286 |
219 { "abx", { 0x3a, -1, -1, -1 }, insn_parse_inh, insn_resolve_inh, lwasm_emit_inh, lwasm_insn_normal}, | 287 { "abx", { 0x3a, -1, -1, -1 }, insn_parse_inh, insn_resolve_inh, insn_emit_inh, lwasm_insn_normal}, |
220 { "adca", { 0x99, 0xa9, 0xb9, 0x89}, insn_parse_gen8, insn_resolve_gen8, insn_emit_gen8, lwasm_insn_normal}, | 288 { "adca", { 0x99, 0xa9, 0xb9, 0x89}, insn_parse_gen8, insn_resolve_gen8, insn_emit_gen8, lwasm_insn_normal}, |
221 { "adcb", { 0xd9, 0xe9, 0xf9, 0xc9}, insn_parse_gen8, insn_resolve_gen8, insn_emit_gen8, lwasm_insn_normal}, | 289 { "adcb", { 0xd9, 0xe9, 0xf9, 0xc9}, insn_parse_gen8, insn_resolve_gen8, insn_emit_gen8, lwasm_insn_normal}, |
222 { "adcd", { 0x1099, 0x10a9, 0x10b9, 0x1089},insn_parse_gen16, insn_resolve_gen16, insn_emit_gen16, lwasm_insn_is6309}, | 290 { "adcd", { 0x1099, 0x10a9, 0x10b9, 0x1089},insn_parse_gen16, insn_resolve_gen16, insn_emit_gen16, lwasm_insn_is6309}, |
223 { "adcr", { 0x1031, -1, -1, -1 }, insn_parse_rtor, insn_resolve_rtor, insn_emit_rtor, lwasm_insn_is6309}, | 291 { "adcr", { 0x1031, -1, -1, -1 }, insn_parse_rtor, insn_resolve_rtor, insn_emit_rtor, lwasm_insn_is6309}, |
224 { "adda", { 0x9b, 0xab, 0xbb, 0x8b}, insn_parse_gen8, insn_resolve_gen8, insn_emit_gen8, lwasm_insn_normal}, | 292 { "adda", { 0x9b, 0xab, 0xbb, 0x8b}, insn_parse_gen8, insn_resolve_gen8, insn_emit_gen8, lwasm_insn_normal}, |
380 | 448 |
381 { "neg", { 0x00, 0x60, 0x70, -1 }, insn_parse_gen0, insn_resolve_gen0, insn_emit_gen0, lwasm_insn_normal}, | 449 { "neg", { 0x00, 0x60, 0x70, -1 }, insn_parse_gen0, insn_resolve_gen0, insn_emit_gen0, lwasm_insn_normal}, |
382 { "nega", { 0x40, -1, -1, -1 }, insn_parse_inh, insn_resolve_inh, insn_emit_inh, lwasm_insn_normal}, | 450 { "nega", { 0x40, -1, -1, -1 }, insn_parse_inh, insn_resolve_inh, insn_emit_inh, lwasm_insn_normal}, |
383 { "negb", { 0x50, -1, -1, -1 }, insn_parse_inh, insn_resolve_inh, insn_emit_inh, lwasm_insn_normal}, | 451 { "negb", { 0x50, -1, -1, -1 }, insn_parse_inh, insn_resolve_inh, insn_emit_inh, lwasm_insn_normal}, |
384 { "negd", { 0x1040, -1, -1, -1 }, insn_parse_inh, insn_resolve_inh, insn_emit_inh, lwasm_insn_is6309}, | 452 { "negd", { 0x1040, -1, -1, -1 }, insn_parse_inh, insn_resolve_inh, insn_emit_inh, lwasm_insn_is6309}, |
385 */ | 453 |
386 { "nop", { 0x12, -1, -1, -1 }, insn_parse_inh, insn_resolve_inh, insn_emit_inh, lwasm_insn_normal}, | 454 { "nop", { 0x12, -1, -1, -1 }, insn_parse_inh, insn_resolve_inh, insn_emit_inh, lwasm_insn_normal}, |
387 /* | 455 |
388 { "oim", { 0x01, 0x61, 0x71, -1 }, insn_parse_logicmem, insn_resolve_logicmem, insn_emit_logicmem, lwasm_insn_is6309}, | 456 { "oim", { 0x01, 0x61, 0x71, -1 }, insn_parse_logicmem, insn_resolve_logicmem, insn_emit_logicmem, lwasm_insn_is6309}, |
389 { "ora", { 0x9a, 0xaa, 0xba, 0x8a}, insn_parse_gen8, insn_resolve_gen8, insn_emit_gen8, lwasm_insn_normal}, | 457 { "ora", { 0x9a, 0xaa, 0xba, 0x8a}, insn_parse_gen8, insn_resolve_gen8, insn_emit_gen8, lwasm_insn_normal}, |
390 { "orb", { 0xda, 0xea, 0xfa, 0xca}, insn_parse_gen8, insn_resolve_gen8, insn_emit_gen8, lwasm_insn_normal}, | 458 { "orb", { 0xda, 0xea, 0xfa, 0xca}, insn_parse_gen8, insn_resolve_gen8, insn_emit_gen8, lwasm_insn_normal}, |
391 { "orcc", { 0x1a, -1, -1, 0x1a }, insn_parse_imm8, insn_resolve_imm8, insn_emit_imm8, lwasm_insn_normal}, | 459 { "orcc", { 0x1a, -1, -1, 0x1a }, insn_parse_imm8, insn_resolve_imm8, insn_emit_imm8, lwasm_insn_normal}, |
392 { "ord", { 0x109a, 0x10aa, 0x10ba, 0x108a},insn_parse_gen16, insn_resolve_gen16, insn_emit_gen16, lwasm_insn_is6309}, | 460 { "ord", { 0x109a, 0x10aa, 0x10ba, 0x108a},insn_parse_gen16, insn_resolve_gen16, insn_emit_gen16, lwasm_insn_is6309}, |
470 { "tstb", { 0x5d, -1, -1, -1 }, insn_parse_inh, insn_resolve_inh, insn_emit_inh, lwasm_insn_normal}, | 538 { "tstb", { 0x5d, -1, -1, -1 }, insn_parse_inh, insn_resolve_inh, insn_emit_inh, lwasm_insn_normal}, |
471 { "tstd", { 0x104d, -1, -1, -1 }, insn_parse_inh, insn_resolve_inh, insn_emit_inh, lwasm_insn_is6309}, | 539 { "tstd", { 0x104d, -1, -1, -1 }, insn_parse_inh, insn_resolve_inh, insn_emit_inh, lwasm_insn_is6309}, |
472 { "tste", { 0x114d, -1, -1, -1 }, insn_parse_inh, insn_resolve_inh, insn_emit_inh, lwasm_insn_is6309}, | 540 { "tste", { 0x114d, -1, -1, -1 }, insn_parse_inh, insn_resolve_inh, insn_emit_inh, lwasm_insn_is6309}, |
473 { "tstf", { 0x115d, -1, -1, -1 }, insn_parse_inh, insn_resolve_inh, insn_emit_inh, lwasm_insn_is6309}, | 541 { "tstf", { 0x115d, -1, -1, -1 }, insn_parse_inh, insn_resolve_inh, insn_emit_inh, lwasm_insn_is6309}, |
474 { "tstw", { 0x105d, -1, -1, -1 }, insn_parse_inh, insn_resolve_inh, insn_emit_inh, lwasm_insn_is6309}, | 542 { "tstw", { 0x105d, -1, -1, -1 }, insn_parse_inh, insn_resolve_inh, insn_emit_inh, lwasm_insn_is6309}, |
475 */ | 543 |
476 { "org", { -1, -1, -1, -1 }, pseudo_parse_org, pseudo_resolve_org, pseudo_emit_org, lwasm_insn_normal}, | 544 { "org", { -1, -1, -1, -1 }, pseudo_parse_org, pseudo_resolve_org, pseudo_emit_org, lwasm_insn_normal}, |
477 { "equ", { -1, -1, -1, -1 }, pseudo_parse_equ, pseudo_resolve_equ, pseudo_emit_equ, lwasm_insn_setsym}, | 545 { "equ", { -1, -1, -1, -1 }, pseudo_parse_equ, pseudo_resolve_equ, pseudo_emit_equ, lwasm_insn_setsym}, |
478 { "=", { -1, -1, -1, -1 }, pseudo_parse_equ, pseudo_resolve_equ, pseudo_emit_equ, lwasm_insn_setsym}, | 546 { "=", { -1, -1, -1, -1 }, pseudo_parse_equ, pseudo_resolve_equ, pseudo_emit_equ, lwasm_insn_setsym}, |
479 | 547 |
480 { "extern", { -1, -1, -1, -1 }, pseudo_parse_extern, pseudo_resolve_extern, pseudo_emit_extern, lwasm_insn_setsym}, | 548 { "extern", { -1, -1, -1, -1 }, pseudo_parse_extern, pseudo_resolve_extern, pseudo_emit_extern, lwasm_insn_setsym}, |