summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa/decoder
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2007-06-14 20:52:22 +0000
committerGabe Black <gblack@eecs.umich.edu>2007-06-14 20:52:22 +0000
commit866cc8214ba1642c2af56ed14e9ca2cf8b1928cf (patch)
tree5de3396fae004a17052103b437858e1d1275854b /src/arch/x86/isa/decoder
parenta8f65b18bc55fdb8ca888abfd0d991d12602fbf4 (diff)
downloadgem5-866cc8214ba1642c2af56ed14e9ca2cf8b1928cf.tar.xz
Implement a handful more instructions and differentiate macroops based on the operand types they expect.
--HG-- extra : convert_revision : f9c8e694a8c0eb33b988657dca03ab495b65bee8
Diffstat (limited to 'src/arch/x86/isa/decoder')
-rw-r--r--src/arch/x86/isa/decoder/one_byte_opcodes.isa26
1 files changed, 21 insertions, 5 deletions
diff --git a/src/arch/x86/isa/decoder/one_byte_opcodes.isa b/src/arch/x86/isa/decoder/one_byte_opcodes.isa
index 72fbf2896..b72b2b16a 100644
--- a/src/arch/x86/isa/decoder/one_byte_opcodes.isa
+++ b/src/arch/x86/isa/decoder/one_byte_opcodes.isa
@@ -163,11 +163,11 @@
0x7: dec_eDI();
}
0x0A: decode OPCODE_OP_BOTTOM3 {
- 0x0: push_rAX();
+ 0x0: Inst::PUSH(rAx);
0x1: push_rCX();
0x2: push_rDX();
0x3: push_rBX();
- 0x4: push_rSP();
+ 0x4: Inst::PUSH(rSP);
0x5: push_rBP();
0x6: push_rSI();
0x7: push_rDI();
@@ -230,7 +230,17 @@
0x0: group1_Eb_Ib();
0x1: group1_Ev_Iz();
0x2: group1_Eb_Ib();
- 0x3: group1_Ev_Ib();
+ //0x3: group1_Ev_Ib();
+ 0x3: decode MODRM_REG {
+ 0x0: add_Eb_Ib();
+ 0x1: or_Eb_Ib();
+ 0x2: adc_Eb_Ib();
+ 0x3: sbb_Eb_Ib();
+ 0x4: Inst::AND(Eb,Ib);
+ 0x5: sub_Eb_Ib();
+ 0x6: xor_Eb_Ib();
+ 0x7: cmp_Eb_Ib();
+ }
0x4: test_Eb_Gb();
0x5: test_Ev_Gv();
0x6: xchg_Eb_Gb();
@@ -313,8 +323,14 @@
0x3: ret_near();
0x4: les_Gz_Mp();
0x5: lds_Gz_Mp();
- 0x6: group12_Eb_Ib();
- 0x7: group12_Ev_Iz();
+ //0x6: group12_Eb_Ib();
+ 0x6: decode MODRM_REG {
+ 0x0: Inst::MOV(Eb,Ib);
+ }
+ //0x7: group12_Ev_Iz();
+ 0x7: decode MODRM_REG {
+ 0x0: Inst::MOV(Ev,Iz);
+ }
}
0x19: decode OPCODE_OP_BOTTOM3 {
0x0: enter_Iw_Ib();