X86: Implement the BOUND instruction.
--HG-- extra : convert_revision : 7bcfa5b4a47d342bee267cc593a1bd4b4f31abe0
This commit is contained in:
parent
33dbd8a766
commit
c526b00b35
2 changed files with 15 additions and 6 deletions
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
};
|
||||
'''
|
||||
|
|
Loading…
Reference in a new issue