/* Tables for the assembler and disassembler, respectively */
extern const struct itemplate * const nasm_instructions[];
extern const struct disasm_index itable[256];
-extern const struct disasm_index * const itable_vex[2][32][8];
+extern const struct disasm_index * const itable_vex[2][32][4];
/* Common table for the byte codes */
extern const uint8_t nasm_bytecodes[];
for ($c = 0; $c < $vex_classes; $c++) {
$vexmap{$vex_class[$c]} = $c;
for ($m = 0; $m < 32; $m++) {
- for ($lp = 0; $lp < 8; $lp++) {
- push(@vexlist, sprintf("%s%02X%01X", $vex_class[$c], $m, $lp));
+ for ($p = 0; $p < 4; $p++) {
+ push(@vexlist, sprintf("%s%02X%01X", $vex_class[$c], $m, $p));
}
}
}
print D "};\n";
}
- printf D "\nconst struct disasm_index * const itable_vex[%d][32][8] =\n",
+ printf D "\nconst struct disasm_index * const itable_vex[%d][32][4] =\n",
$vex_classes;
print D "{\n";
for ($c = 0; $c < $vex_classes; $c++) {
print D " {\n";
for ($m = 0; $m < 32; $m++) {
print D " {\n";
- for ($lp = 0; $lp < 8; $lp++) {
- $vp = sprintf("%s%02X%01X", $vex_class[$c], $m, $lp);
+ for ($p = 0; $p < 4; $p++) {
+ $vp = sprintf("%s%02X%01X", $vex_class[$c], $m, $p);
if ($is_prefix{$vp}) {
printf D " itable_%s,\n", $vp;
} else {
$wlp = shift(@codes);
$c = ($m >> 6);
$m = $m & 31;
- $prefix .= sprintf('%s%02X%01X', $vex_class[$c], $m, $wlp & 7);
+ $prefix .= sprintf('%s%02X%01X', $vex_class[$c], $m, $wlp & 3);
} elsif ($c0 >= 0172 && $c0 <= 174) {
shift(@codes); # Skip is4 control byte
} else {