Lines Matching refs:opcode

221 { package opcode;	# pick up opcodes
359 die if ($opcode->mnemonic() ne "mov");
360 $opcode->mnemonic("lea");
364 $self->{opcode} = $opcode;
420 my $mnemonic = $self->{opcode}->mnemonic();
447 my ($class, $line, $opcode) = @_;
457 $opcode->size($self->size());
556 my ($class, $line, $opcode) = @_;
569 $self->{opcode} = $opcode;
575 if ($nasm && $self->{opcode}->mnemonic()=~m/^j(?![re]cxz)/) {
1189 my $opcode=shift;
1194 push @$opcode,($rex|0x40) if ($rex);
1199 my @opcode=(0x66);
1203 rex(\@opcode,$src,$dst,0x8);
1204 push @opcode,0x0f,0x7e;
1205 push @opcode,0xc0|(($src&7)<<3)|($dst&7); # ModR/M
1206 @opcode;
1210 rex(\@opcode,$src,$dst,0x8);
1211 push @opcode,0x0f,0x6e;
1212 push @opcode,0xc0|(($src&7)<<3)|($dst&7); # ModR/M
1213 @opcode;
1221 my @opcode=(0x66);
1227 rex(\@opcode,$src,$dst);
1228 push @opcode,0x0f,0x3a,0x16;
1229 push @opcode,0xc0|(($src&7)<<3)|($dst&7); # ModR/M
1230 push @opcode,$imm;
1231 @opcode;
1239 my @opcode=(0x66);
1245 rex(\@opcode,$dst,$src);
1246 push @opcode,0x0f,0x3a,0x22;
1247 push @opcode,0xc0|(($dst&7)<<3)|($src&7); # ModR/M
1248 push @opcode,$imm;
1249 @opcode;
1257 my @opcode=(0x66);
1258 rex(\@opcode,$2,$1);
1259 push @opcode,0x0f,0x38,0x00;
1260 push @opcode,0xc0|($1&7)|(($2&7)<<3); # ModR/M
1261 @opcode;
1269 my @opcode=(0x66);
1270 rex(\@opcode,$3,$2);
1271 push @opcode,0x0f,0x3a,0x0f;
1272 push @opcode,0xc0|($2&7)|(($3&7)<<3); # ModR/M
1273 push @opcode,$1;
1274 @opcode;
1282 my @opcode=(0x66);
1283 rex(\@opcode,$3,$2);
1284 push @opcode,0x0f,0x3a,0x44;
1285 push @opcode,0xc0|($2&7)|(($3&7)<<3); # ModR/M
1287 push @opcode,$c=~/^0/?oct($c):$c;
1288 @opcode;
1296 my @opcode=();
1299 rex(\@opcode,0,$dst,8);
1300 push @opcode,0x0f,0xc7,0xf0|($dst&7);
1301 @opcode;
1309 my @opcode=();
1312 rex(\@opcode,0,$dst,8);
1313 push @opcode,0x0f,0xc7,0xf8|($dst&7);
1314 @opcode;
1325 my $opcode=shift;
1332 push @$opcode,$rxb;
1337 my @opcode=(0x8f);
1338 rxb(\@opcode,$3,$2,-1,0x08);
1339 push @opcode,0x78,0xc2;
1340 push @opcode,0xc0|($2&7)|(($3&7)<<3); # ModR/M
1342 push @opcode,$c=~/^0/?oct($c):$c;
1343 @opcode;
1351 my @opcode=(0x8f);
1352 rxb(\@opcode,$3,$2,-1,0x08);
1353 push @opcode,0x78,0xc3;
1354 push @opcode,0xc0|($2&7)|(($3&7)<<3); # ModR/M
1356 push @opcode,$c=~/^0/?oct($c):$c;
1357 @opcode;
1397 } elsif (my $opcode=opcode->re(\$line)) {
1398 my $asm = eval("\$".$opcode->mnemonic());
1409 ($arg=register->re(\$line, $opcode))||
1411 ($arg=ea->re(\$line, $opcode)) ||
1412 ($arg=expr->re(\$line, $opcode)) ||
1424 my $sz=$opcode->size();
1427 $insn = $opcode->out($#args>=1?$args[$#args]->size():$sz);
1431 $insn = $opcode->out();
1441 undef $sz if ($nasm && $opcode->mnemonic() eq "lea");
1445 printf "\t%s",$opcode->out();