diff options
author | H. Peter Anvin <hpa@zytor.com> | 2008-10-09 14:15:36 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2008-10-09 14:15:36 -0700 |
commit | fa3833db81524e8283ae6c56fa9aedfa89afdb62 (patch) | |
tree | 4f6a8b53661cc3569eefe07d3da2f6da5fd4d011 | |
parent | aac7c0c174d4624a075b89e0547f846f985e5553 (diff) | |
download | nasm-fa3833db81524e8283ae6c56fa9aedfa89afdb62.tar.gz |
disasm: collapse all the segment register push/pop bytecodes
As far as the disassembler is concerned, the segment register push/pop
bytecodes can be collapsed to a simple expression; the remaining
differences are handled by the filter expressions in insns.pl.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
-rw-r--r-- | disasm.c | 61 |
1 files changed, 2 insertions, 59 deletions
@@ -830,65 +830,8 @@ static int matches(const struct itemplate *t, uint8_t *data, case 0340: return false; - case 0344: - switch (*data++) { - case 0x06: - ins->oprs[0].basereg = 0; - break; - case 0x0E: - ins->oprs[0].basereg = 1; - break; - case 0x16: - ins->oprs[0].basereg = 2; - break; - case 0x1E: - ins->oprs[0].basereg = 3; - break; - default: - return false; - } - break; - - case 0345: - switch (*data++) { - case 0x07: - ins->oprs[0].basereg = 0; - break; - case 0x17: - ins->oprs[0].basereg = 2; - break; - case 0x1F: - ins->oprs[0].basereg = 3; - break; - default: - return false; - } - break; - - case 0346: - switch (*data++) { - case 0xA0: - ins->oprs[0].basereg = 4; - break; - case 0xA8: - ins->oprs[0].basereg = 5; - break; - default: - return false; - } - break; - - case 0347: - switch (*data++) { - case 0xA1: - ins->oprs[0].basereg = 4; - break; - case 0xA9: - ins->oprs[0].basereg = 5; - break; - default: - return false; - } + case4(0344): + ins->oprs[0].basereg = (*data++ >> 3) & 7; break; case 0360: |