From: ggn Date: Sat, 18 Jul 2020 16:17:11 +0000 (+0300) Subject: Tidy up ([bd,An/PC],Xn.W/L...) size and scale parse code X-Git-Tag: v2.1.0~13 X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=commitdiff_plain;h=0ea4f9ed4fe59867e2b4aa05d5453da77fff2974;hp=56498a111092a0a21ea3279677636c706f67cf74 Tidy up ([bd,An/PC],Xn.W/L...) size and scale parse code --- diff --git a/parmode.h b/parmode.h index 3cefbca..7e31545 100644 --- a/parmode.h +++ b/parmode.h @@ -518,7 +518,7 @@ AMn_IXN: // Handle any indexed (tok -> a comma) goto IS_SUPPRESSEDn; // https://xkcd.com/292/ - what does he know anyway? } - // Check for size + // Check for Xn size // ([bd,An/PC],Xn.W/L...) switch ((int)*tok) { @@ -526,8 +526,6 @@ AMn_IXN: // Handle any indexed (tok -> a comma) case DOTW: tok++; break; - default: - break; case DOTL: AnEXTEN |= EXT_L; tok++; @@ -535,9 +533,11 @@ AMn_IXN: // Handle any indexed (tok -> a comma) case DOTB: // .B not allowed here... goto badmode; + default: + break; } - // Check for scale + // Check for Xn scale if (*tok == '*') // ([bd,An/PC],Xn*...) { // scale: *1, *2, *4, *8 tok++; @@ -546,47 +546,32 @@ AMn_IXN: // Handle any indexed (tok -> a comma) { if (expr(scaleexpr, &scaleval, &scaleattr, &scaleesym) != OK) return error("scale factor expression must evaluate"); - - switch (scaleval) - { - case 1: - break; - case 2: - AnIXSIZ |= TIMES2; - break; - case 4: - AnIXSIZ |= TIMES4; - break; - case 8: - AnIXSIZ |= TIMES8; - break; - default: - goto badmode; - } } - else if (*tok++ != CONST) - goto badmode; - else + else if (*tok == CONST) { - switch ((int)*tok++) - { - case 1: - break; - case 2: - AnIXSIZ |= TIMES2; - break; - case 4: - AnIXSIZ |= TIMES4; - break; - case 8: - AnIXSIZ |= TIMES8; - break; - default: - goto badmode; - } - + scaleval = (int)*tok++; tok++; // Take into account that constants are 64-bit } + else + goto badmode; + + switch (scaleval) + { + case 1: + break; + case 2: + AnIXSIZ |= TIMES2; + break; + case 4: + AnIXSIZ |= TIMES4; + break; + case 8: + AnIXSIZ |= TIMES8; + break; + default: + goto badmode; + } + } // Check for od