From: Peter Johnson Date: Tue, 20 Nov 2001 21:02:17 +0000 (-0000) Subject: Don't do REG_E?AX combining with reg8/reg8x instructions, to allow things like X-Git-Tag: v0.1.0~177 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bd921434cba67dfabca7c33fa5302cf9c1d38254;p=yasm Don't do REG_E?AX combining with reg8/reg8x instructions, to allow things like "ADD AX, byte 8" to generate the same code as NASM does (OT: this doesn't save any space because the reg8x form needs a ModRM, but if it's what the user wants, do it). svn path=/trunk/yasm/; revision=353 --- diff --git a/modules/parsers/nasm/gen_instr.pl b/modules/parsers/nasm/gen_instr.pl index 46480771..26108c31 100755 --- a/modules/parsers/nasm/gen_instr.pl +++ b/modules/parsers/nasm/gen_instr.pl @@ -749,14 +749,14 @@ sub output_yacc ($@) print GRAMMAR cond_action ($rule, $tokens, $count++, $regarg, 0, $func, $AL->[3], \@args); } - elsif ($AX and ($inst->[OPERANDS]||"") =~ m/reg16,imm/) + elsif ($AX and ($inst->[OPERANDS]||"") =~ m/reg16,imm(16|16x)?$/) { $AX->[4] = 1; my $regarg = get_token_number ($tokens, "reg16"); print GRAMMAR cond_action ($rule, $tokens, $count++, $regarg, 0, $func, $AX->[3], \@args); } - elsif ($EAX and ($inst->[OPERANDS]||"") =~ m/reg32,imm/) + elsif ($EAX and ($inst->[OPERANDS]||"") =~ m/reg32,imm(32|32x)?$/) { $EAX->[4] = 1; my $regarg = get_token_number ($tokens, "reg32"); diff --git a/src/parsers/nasm/gen_instr.pl b/src/parsers/nasm/gen_instr.pl index 46480771..26108c31 100755 --- a/src/parsers/nasm/gen_instr.pl +++ b/src/parsers/nasm/gen_instr.pl @@ -749,14 +749,14 @@ sub output_yacc ($@) print GRAMMAR cond_action ($rule, $tokens, $count++, $regarg, 0, $func, $AL->[3], \@args); } - elsif ($AX and ($inst->[OPERANDS]||"") =~ m/reg16,imm/) + elsif ($AX and ($inst->[OPERANDS]||"") =~ m/reg16,imm(16|16x)?$/) { $AX->[4] = 1; my $regarg = get_token_number ($tokens, "reg16"); print GRAMMAR cond_action ($rule, $tokens, $count++, $regarg, 0, $func, $AX->[3], \@args); } - elsif ($EAX and ($inst->[OPERANDS]||"") =~ m/reg32,imm/) + elsif ($EAX and ($inst->[OPERANDS]||"") =~ m/reg32,imm(32|32x)?$/) { $EAX->[4] = 1; my $regarg = get_token_number ($tokens, "reg32");