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 }