From bd921434cba67dfabca7c33fa5302cf9c1d38254 Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Tue, 20 Nov 2001 21:02:17 +0000 Subject: [PATCH] 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 --- modules/parsers/nasm/gen_instr.pl | 4 ++-- src/parsers/nasm/gen_instr.pl | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) 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");