Mercurial > hg-old > index.cgi
diff src/insn_misc.c @ 28:c0ff62e5ad39
Added register list mode handler
author | lost |
---|---|
date | Fri, 02 Jan 2009 03:17:26 +0000 |
parents | f736579569b4 |
children | 7c6b8bdf8c5c |
line wrap: on
line diff
--- a/src/insn_misc.c Fri Jan 02 02:56:04 2009 +0000 +++ b/src/insn_misc.c Fri Jan 02 03:17:26 2009 +0000 @@ -28,44 +28,6 @@ extern void insn_gen_aux(asmstate_t *as, sourceline_t *cl, char **optr, int *b1, int *b2, int *b3, int *op); -void insn_rlist(asmstate_t *as, sourceline_t *cl, char **optr) -{ - int rb = 0; - int rn; - static const char *regs = "CCA B DPX Y U PCD S "; - - emitop(instab[cl -> opcode].ops[0]); - cl -> addrmode = OPER_RLIST; - while (**optr && !isspace(**optr)) - { - rn = lookupreg(regs, optr); - if (rn < 0) - { - printf("Bad reg (%s)\n", *optr); - errorp1(ERR_BADOPER); - emit(0); - return; - } - if (**optr && **optr != ',' && !isspace(**optr)) - { - printf("Bad char (%c)\n", **optr); - errorp1(ERR_BADOPER); - emit(0); - return; - } - if (**optr == ',') - (*optr)++; - if (rn == 8) - rn = 6; - else if (rn == 9) - rn = 0x40; - else - rn = 1 << rn; - rb |= rn; - } - emit(rb); -} - // for aim, oim, eim, tim void insn_logicmem(asmstate_t *as, sourceline_t *cl, char **optr) {