X86: Implement the BOUND instruction.

--HG--
extra : convert_revision : 7bcfa5b4a47d342bee267cc593a1bd4b4f31abe0
This commit is contained in:
Gabe Black 2007-10-18 22:40:48 -07:00
parent 33dbd8a766
commit c526b00b35
2 changed files with 15 additions and 6 deletions

View file

@ -186,7 +186,7 @@
}
0x2: decode MODE_SUBMODE {
0x0: UD2();
default: WarnUnimpl::bound_Gv_Ma();
default: BOUND(Gv,Mv);
}
0x3: decode MODE_SUBMODE {
//The second operand should really be of size "d", but it's

View file

@ -53,8 +53,17 @@
#
# Authors: Gabe Black
microcode = ""
#let {{
# class BOUND(Inst):
# "GenFault ${new UnimpInstFault}"
#}};
microcode = '''
def macroop BOUND_R_M {
ld t1, seg, sib, disp, dataSize="env.dataSize * 2"
srli t2, t1, "env.dataSize * 8"
sub t1, t1, reg, flags=(ECF,)
fault "new BoundRange", flags=(CECF,)
sub t2, reg, t2, flags=(ECF,)
fault "new BoundRange", flags=(CECF,)
};
def macroop BOUND_R_P {
fault "new UnimpInstFault"
};
'''