Lines Matching refs:opcode
103 { package opcode; # pick up opcodes package
244 die if ($opcode->mnemonic() ne "mov");
245 $opcode->mnemonic("lea");
249 $self->{opcode} = $opcode;
305 my $mnemonic = $self->{opcode}->mnemonic();
332 my ($class, $line, $opcode) = @_;
342 $opcode->size($self->size());
441 my ($class, $line, $opcode) = @_;
454 $self->{opcode} = $opcode;
460 if ($nasm && $self->{opcode}->mnemonic()=~m/^j(?![re]cxz)/) {
955 my $opcode=shift;
960 push @$opcode,($rex|0x40) if ($rex);
965 my @opcode=(0x66);
969 rex(\@opcode,$src,$dst,0x8);
970 push @opcode,0x0f,0x7e;
971 push @opcode,0xc0|(($src&7)<<3)|($dst&7); # ModR/M
972 @opcode;
976 rex(\@opcode,$src,$dst,0x8);
977 push @opcode,0x0f,0x6e;
978 push @opcode,0xc0|(($src&7)<<3)|($dst&7); # ModR/M
979 @opcode;
987 my @opcode=(0x66);
993 rex(\@opcode,$src,$dst);
994 push @opcode,0x0f,0x3a,0x16;
995 push @opcode,0xc0|(($src&7)<<3)|($dst&7); # ModR/M
996 push @opcode,$imm;
997 @opcode;
1005 my @opcode=(0x66);
1011 rex(\@opcode,$dst,$src);
1012 push @opcode,0x0f,0x3a,0x22;
1013 push @opcode,0xc0|(($dst&7)<<3)|($src&7); # ModR/M
1014 push @opcode,$imm;
1015 @opcode;
1023 my @opcode=(0x66);
1024 rex(\@opcode,$2,$1);
1025 push @opcode,0x0f,0x38,0x00;
1026 push @opcode,0xc0|($1&7)|(($2&7)<<3); # ModR/M
1027 @opcode;
1035 my @opcode=(0x66);
1036 rex(\@opcode,$3,$2);
1037 push @opcode,0x0f,0x3a,0x0f;
1038 push @opcode,0xc0|($2&7)|(($3&7)<<3); # ModR/M
1039 push @opcode,$1;
1040 @opcode;
1048 my @opcode=(0x66);
1049 rex(\@opcode,$3,$2);
1050 push @opcode,0x0f,0x3a,0x44;
1051 push @opcode,0xc0|($2&7)|(($3&7)<<3); # ModR/M
1053 push @opcode,$c=~/^0/?oct($c):$c;
1054 @opcode;
1062 my @opcode=();
1065 rex(\@opcode,0,$dst,8);
1066 push @opcode,0x0f,0xc7,0xf0|($dst&7);
1067 @opcode;
1075 my @opcode=();
1078 rex(\@opcode,0,$dst,8);
1079 push @opcode,0x0f,0xc7,0xf8|($dst&7);
1080 @opcode;
1091 my $opcode=shift;
1098 push @$opcode,$rxb;
1103 my @opcode=(0x8f);
1104 rxb(\@opcode,$3,$2,-1,0x08);
1105 push @opcode,0x78,0xc2;
1106 push @opcode,0xc0|($2&7)|(($3&7)<<3); # ModR/M
1108 push @opcode,$c=~/^0/?oct($c):$c;
1109 @opcode;
1117 my @opcode=(0x8f);
1118 rxb(\@opcode,$3,$2,-1,0x08);
1119 push @opcode,0x78,0xc3;
1120 push @opcode,0xc0|($2&7)|(($3&7)<<3); # ModR/M
1122 push @opcode,$c=~/^0/?oct($c):$c;
1123 @opcode;
1206 } elsif (my $opcode=opcode->re(\$line)) {
1207 my $asm = eval("\$".$opcode->mnemonic());
1218 ($arg=register->re(\$line, $opcode))||
1220 ($arg=ea->re(\$line, $opcode)) ||
1221 ($arg=expr->re(\$line, $opcode)) ||
1233 my $sz=$opcode->size();
1236 $insn = $opcode->out($#args>=1?$args[$#args]->size():$sz);
1240 $insn = $opcode->out();
1250 undef $sz if ($nasm && $opcode->mnemonic() eq "lea");
1254 printf "\t%s",$opcode->out();