Mercurial > hg-old > index.cgi
comparison lwasm/insn_rtor.c @ 230:0df2a39a268c
Added --6809/--6309 switches and some cleanups in error reporting
author | lost |
---|---|
date | Fri, 12 Jun 2009 03:18:32 +0000 |
parents | bae1e3ecdce1 |
children |
comparison
equal
deleted
inserted
replaced
229:59a138df0401 | 230:0df2a39a268c |
---|---|
29 | 29 |
30 OPFUNC(insn_rtor) | 30 OPFUNC(insn_rtor) |
31 { | 31 { |
32 int r0, r1; | 32 int r0, r1; |
33 static const char *regs = "D X Y U S PCW V A B CCDP0 0 E F "; | 33 static const char *regs = "D X Y U S PCW V A B CCDP0 0 E F "; |
34 | 34 static const char *regs9 = "D X Y U S PC A B CCDP "; |
35 | |
35 lwasm_emitop(as, l, instab[opnum].ops[0]); | 36 lwasm_emitop(as, l, instab[opnum].ops[0]); |
36 // register to register (r0,r1) | 37 // register to register (r0,r1) |
37 // registers are in order: | 38 // registers are in order: |
38 // D,X,Y,U,S,PC,W,V | 39 // D,X,Y,U,S,PC,W,V |
39 // A,B,CC,DP,0,0,E,F | 40 // A,B,CC,DP,0,0,E,F |
40 r0 = lwasm_lookupreg2(regs, p); | 41 r0 = lwasm_lookupreg2((as -> no6309) ? regs9 : regs, p); |
41 if (r0 < 0 || *(*p)++ != ',') | 42 if (r0 < 0 || *(*p)++ != ',') |
42 { | 43 { |
43 register_error(as, l, 1, "Bad operand"); | 44 register_error(as, l, 1, "Bad operand"); |
44 r0 = r1 = 0; | 45 r0 = r1 = 0; |
45 } | 46 } |
46 else | 47 else |
47 { | 48 { |
48 r1 = lwasm_lookupreg2(regs, p); | 49 r1 = lwasm_lookupreg2((as -> no6309) ? regs9 : regs, p); |
49 if (r1 < 0) | 50 if (r1 < 0) |
50 { | 51 { |
51 register_error(as, l, 1, "Bad operand"); | 52 register_error(as, l, 1, "Bad operand"); |
52 r0 = r1 = 0; | 53 r0 = r1 = 0; |
53 } | 54 } |