X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=procln.c;h=8cdcc6af2501cd5e8b1886cbe76e3813a63a46d9;hp=9c207bfdefe8481ca71195ad1ad7c3aaaf7c3471;hb=ace0b549a94110b69ec61442f825fb421b79799a;hpb=4205233c8397c581b4d27ab36ab81ec896ef3dd0 diff --git a/procln.c b/procln.c index 9c207bf..8cdcc6a 100644 --- a/procln.c +++ b/procln.c @@ -486,6 +486,11 @@ When checking to see if it's already been equated, issue a warning. registerbank = BANK_0; else if (*(uint64_t *)tok == 1) registerbank = BANK_1; + + // Advance half-way through the 64-bit const. + // The code below, expecting a regular token, + // will advance past the second half. + tok++; } #ifdef DEBODGE_REGBANK @@ -845,8 +850,13 @@ When checking to see if it's already been equated, issue a warning. if (amode(1) < 0) // Parse 0, 1 or 2 addr modes goto loop; - if (*tok != EOL) - error(extra_stuff); + // Check that we're at EOL + // The only exception is ptestr/ptestw instructions + // that have 3 or 4 operands and are not handled by + // amode(). (yes, we're taking a performance hit here sadly) + if (m->mnfunc != m_ptestr && m->mnfunc != m_ptestw) + if (*tok != EOL) + error(extra_stuff); amsk0 = amsktab[am0]; amsk1 = amsktab[am1];