diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2007-07-21 19:29:39 -0700 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2007-07-21 19:29:39 -0700 |
commit | f7ff068b3044706a874459afac859a38307828c9 (patch) | |
tree | 29731a10a37b9ea7ead0a2c88fdf11289d01bc49 /src/arch/x86/isa/decoder | |
parent | ee6fbdc28b911f0899a93c7711f97b28d22b1039 (diff) | |
download | gem5-f7ff068b3044706a874459afac859a38307828c9.tar.xz |
Implemented and hooked in xchg, rotate with carry, and ret instructions
--HG--
extra : convert_revision : a8e67b0ab4072308f01e0df7f7ee05b31f605a35
Diffstat (limited to 'src/arch/x86/isa/decoder')
-rw-r--r-- | src/arch/x86/isa/decoder/one_byte_opcodes.isa | 109 |
1 files changed, 52 insertions, 57 deletions
diff --git a/src/arch/x86/isa/decoder/one_byte_opcodes.isa b/src/arch/x86/isa/decoder/one_byte_opcodes.isa index 329a03f40..b28f2029c 100644 --- a/src/arch/x86/isa/decoder/one_byte_opcodes.isa +++ b/src/arch/x86/isa/decoder/one_byte_opcodes.isa @@ -232,8 +232,8 @@ 0x7: JNLE(Jb); } } - 0x10: decode OPCODE_OP_BOTTOM3 { - format Inst { + format Inst { + 0x10: decode OPCODE_OP_BOTTOM3 { //0x0: group1_Eb_Ib(); 0x0: decode MODRM_REG { 0x0: ADD(Eb,Ib); @@ -281,11 +281,11 @@ 0x6: XOR(Ev,Ib); 0x7: CMP(Ev,Ib); } - 0x4: Inst::TEST(Eb,Gb); - 0x5: Inst::TEST(Ev,Gv); + 0x4: TEST(Eb,Gb); + 0x5: TEST(Ev,Gv); + 0x6: XCHG(Eb,Gb); + 0x7: XCHG(Ev,Gv); } - 0x6: xchg_Eb_Gb(); - 0x7: xchg_Ev_Gv(); } 0x11: decode OPCODE_OP_BOTTOM3 { 0x0: Inst::MOV(Eb,Gb); @@ -342,57 +342,52 @@ 0x6: scas_Yb_Al(); 0x7: scas_Yv_rAX(); } - 0x16: decode OPCODE_OP_BOTTOM3 { - 0x0: mov_Al_Ib(); - 0x1: mov_Cl_Ib(); - 0x2: mov_Dl_Ib(); - 0x3: mov_Bl_Ib(); - 0x4: mov_Ah_Ib(); - 0x5: mov_Ch_Ib(); - 0x6: mov_Dh_Ib(); - 0x7: mov_Bh_Ib(); - } - 0x17: Inst::MOV(B,Iv); - 0x18: decode OPCODE_OP_BOTTOM3 { - //0x0: group2_Eb_Ib(); - 0x0: decode MODRM_REG { - 0x0: Inst::ROL(Eb,Ib); - 0x1: Inst::ROR(Eb,Ib); - 0x2: rcl_Eb_Ib(); - 0x3: rcr_Eb_Ib(); - 0x4: Inst::SAL(Eb,Ib); - 0x5: Inst::SHR(Eb,Ib); - 0x6: Inst::SAL(Eb,Ib); - 0x7: Inst::SAR(Eb,Ib); - } - //0x1: group2_Ev_Ib(); - 0x1: decode MODRM_REG { - 0x0: Inst::ROL(Ev,Ib); - 0x1: Inst::ROR(Ev,Ib); - 0x2: rcl_Ev_Ib(); - 0x3: rcr_Ev_Ib(); - 0x4: Inst::SAL(Ev,Ib); - 0x5: Inst::SHR(Ev,Ib); - 0x6: Inst::SAL(Ev,Ib); - 0x7: Inst::SAR(Ev,Ib); - } - 0x2: ret_near_Iw(); - 0x3: Inst::RET_NEAR(); - 0x4: decode MODE_SUBMODE { - 0x0: Inst::UD2(); - default: les_Gz_Mp(); - } - 0x5: decode MODE_SUBMODE { - 0x0: Inst::UD2(); - default: lds_Gz_Mp(); - } - //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); + format Inst { + 0x16: MOV(B,Ib); + 0x17: MOV(B,Iv); + 0x18: decode OPCODE_OP_BOTTOM3 { + //0x0: group2_Eb_Ib(); + 0x0: decode MODRM_REG { + 0x0: ROL(Eb,Ib); + 0x1: ROR(Eb,Ib); + 0x2: RCL(Eb,Ib); + 0x3: RCR(Eb,Ib); + 0x4: SAL(Eb,Ib); + 0x5: SHR(Eb,Ib); + 0x6: SAL(Eb,Ib); + 0x7: SAR(Eb,Ib); + } + //0x1: group2_Ev_Ib(); + 0x1: decode MODRM_REG { + 0x0: ROL(Ev,Ib); + 0x1: ROR(Ev,Ib); + 0x2: RCL(Ev,Ib); + 0x3: RCR(Ev,Ib); + 0x4: SAL(Ev,Ib); + 0x5: SHR(Ev,Ib); + 0x6: SAL(Ev,Ib); + 0x7: SAR(Ev,Ib); + } + 0x2: RET_NEAR(Iw); + 0x3: RET_NEAR(); + 0x4: decode MODE_SUBMODE { + 0x0: UD2(); + default: WarnUnimpl::les_Gz_Mp(); + } + 0x5: decode MODE_SUBMODE { + 0x0: UD2(); + default: WarnUnimpl::lds_Gz_Mp(); + } + //0x6: group12_Eb_Ib(); + 0x6: decode MODRM_REG { + 0x0: MOV(Eb,Ib); + default: UD2(); + } + //0x7: group12_Ev_Iz(); + 0x7: decode MODRM_REG { + 0x0: MOV(Ev,Iz); + default: UD2(); + } } } 0x19: decode OPCODE_OP_BOTTOM3 { |