undo the change
This commit is contained in:
parent
4a70e73b9d
commit
856e2491ba
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: fetchdecode.cc,v 1.246 2010-02-06 09:59:52 sshwarts Exp $
|
||||
// $Id: fetchdecode.cc,v 1.247 2010-02-06 10:15:26 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001-2009 The Bochs Project
|
||||
@ -2602,6 +2602,25 @@ fetch_b1:
|
||||
goto modrm_done;
|
||||
}
|
||||
seg = sreg_mod1or2_base32[rm];
|
||||
if (mod == 0x40) { // mod == 01b
|
||||
if (ilen < remain) {
|
||||
// 8 sign extended to 32
|
||||
i->modRMForm.displ32u = (Bit8s) *iptr++;
|
||||
ilen++;
|
||||
goto modrm_done;
|
||||
}
|
||||
else return(-1);
|
||||
}
|
||||
// (mod == 0x80) mod == 10b
|
||||
if ((ilen+3) < remain) {
|
||||
i->modRMForm.displ32u = FetchDWORD(iptr);
|
||||
iptr += 4;
|
||||
ilen += 4;
|
||||
}
|
||||
else {
|
||||
return(-1);
|
||||
}
|
||||
goto modrm_done;
|
||||
}
|
||||
else { // mod!=11b, rm==4, s-i-b byte follows
|
||||
unsigned sib, base, index, scale;
|
||||
@ -2624,7 +2643,7 @@ fetch_b1:
|
||||
}
|
||||
if (mod == 0x00) { // mod==00b, rm==4
|
||||
seg = sreg_mod0_base32[base];
|
||||
if (base == 5) {
|
||||
if (base == 0x05) {
|
||||
i->setSibBase(BX_NIL_REGISTER);
|
||||
if ((ilen+3) < remain) {
|
||||
i->modRMForm.displ32u = FetchDWORD(iptr);
|
||||
@ -2639,28 +2658,28 @@ fetch_b1:
|
||||
goto modrm_done;
|
||||
}
|
||||
seg = sreg_mod1or2_base32[base];
|
||||
}
|
||||
|
||||
if (mod == 0x40) { // mod==01b
|
||||
if (ilen < remain) {
|
||||
// 8 sign extended to 32
|
||||
i->modRMForm.displ32u = (Bit8s) *iptr++;
|
||||
ilen++;
|
||||
if (mod == 0x40) { // mod==01b, rm==4
|
||||
if (ilen < remain) {
|
||||
// 8 sign extended to 32
|
||||
i->modRMForm.displ32u = (Bit8s) *iptr++;
|
||||
ilen++;
|
||||
goto modrm_done;
|
||||
}
|
||||
else {
|
||||
return(-1);
|
||||
}
|
||||
goto modrm_done;
|
||||
}
|
||||
// (mod == 0x80), mod==10b, rm==4
|
||||
if ((ilen+3) < remain) {
|
||||
i->modRMForm.displ32u = FetchDWORD(iptr);
|
||||
iptr += 4;
|
||||
ilen += 4;
|
||||
}
|
||||
else {
|
||||
return(-1);
|
||||
}
|
||||
}
|
||||
|
||||
// (mod == 0x80), mod==10b
|
||||
if ((ilen+3) < remain) {
|
||||
i->modRMForm.displ32u = FetchDWORD(iptr);
|
||||
iptr += 4;
|
||||
ilen += 4;
|
||||
}
|
||||
else {
|
||||
return(-1);
|
||||
goto modrm_done;
|
||||
}
|
||||
}
|
||||
else {
|
||||
@ -2671,7 +2690,7 @@ fetch_b1:
|
||||
i->setSibIndex(Resolve16IndexReg[rm]);
|
||||
if (mod == 0x00) { // mod == 00b
|
||||
seg = sreg_mod00_rm16[rm];
|
||||
if (rm == 6) {
|
||||
if (rm == 0x06) {
|
||||
i->setSibBase(BX_NIL_REGISTER);
|
||||
if ((ilen+1) < remain) {
|
||||
i->modRMForm.displ16u = FetchWORD(iptr);
|
||||
@ -2691,9 +2710,7 @@ fetch_b1:
|
||||
ilen++;
|
||||
goto modrm_done;
|
||||
}
|
||||
else {
|
||||
return(-1);
|
||||
}
|
||||
else return(-1);
|
||||
}
|
||||
// (mod == 0x80) mod == 10b
|
||||
if ((ilen+1) < remain) {
|
||||
@ -2701,9 +2718,7 @@ fetch_b1:
|
||||
iptr += 2;
|
||||
ilen += 2;
|
||||
}
|
||||
else {
|
||||
return(-1);
|
||||
}
|
||||
else return(-1);
|
||||
}
|
||||
|
||||
modrm_done:
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: fetchdecode64.cc,v 1.248 2010-02-06 09:59:52 sshwarts Exp $
|
||||
// $Id: fetchdecode64.cc,v 1.249 2010-02-06 10:15:26 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001-2009 The Bochs Project
|
||||
@ -3512,13 +3512,31 @@ fetch_b1:
|
||||
if (mod == 0x00) { // mod == 00b
|
||||
if ((rm & 0x7) == 5) {
|
||||
i->setSibBase(BX_64BIT_REG_RIP);
|
||||
goto get_32bit_displ;
|
||||
get_32bit_displ:
|
||||
if ((ilen+3) < remain) {
|
||||
i->modRMForm.displ32u = FetchDWORD(iptr);
|
||||
iptr += 4;
|
||||
ilen += 4;
|
||||
goto modrm_done;
|
||||
}
|
||||
else return(-1);
|
||||
}
|
||||
// mod==00b, rm!=4, rm!=5
|
||||
goto modrm_done;
|
||||
}
|
||||
// (mod == 0x40), mod==01b or (mod == 0x80), mod==10b
|
||||
seg = sreg_mod1or2_base32[rm];
|
||||
if (mod == 0x40) { // mod == 01b
|
||||
get_8bit_displ:
|
||||
if (ilen < remain) {
|
||||
// 8 sign extended to 32
|
||||
i->modRMForm.displ32u = (Bit8s) *iptr++;
|
||||
ilen++;
|
||||
goto modrm_done;
|
||||
}
|
||||
else return(-1);
|
||||
}
|
||||
// (mod == 0x80) mod == 10b
|
||||
goto get_32bit_displ;
|
||||
}
|
||||
else { // mod!=11b, rm==4, s-i-b byte follows
|
||||
unsigned sib, base, index, scale;
|
||||
@ -3548,8 +3566,11 @@ fetch_b1:
|
||||
// mod==00b, rm==4, base!=5
|
||||
goto modrm_done;
|
||||
}
|
||||
// (mod == 0x40), mod==01b or (mod == 0x80), mod==10b
|
||||
seg = sreg_mod1or2_base32[base];
|
||||
if (mod == 0x40) // mod==01b, rm==4
|
||||
goto get_8bit_displ;
|
||||
// (mod == 0x80), mod==10b, rm==4
|
||||
goto get_32bit_displ;
|
||||
}
|
||||
}
|
||||
else {
|
||||
@ -3565,8 +3586,11 @@ fetch_b1:
|
||||
// mod==00b, rm!=4, rm!=5
|
||||
goto modrm_done;
|
||||
}
|
||||
// (mod == 0x40), mod==01b or (mod == 0x80), mod==10b
|
||||
seg = sreg_mod1or2_base32[rm];
|
||||
if (mod == 0x40) // mod == 01b
|
||||
goto get_8bit_displ;
|
||||
// (mod == 0x80) mod == 10b
|
||||
goto get_32bit_displ;
|
||||
}
|
||||
else { // mod!=11b, rm==4, s-i-b byte follows
|
||||
unsigned sib, base, index, scale;
|
||||
@ -3596,34 +3620,11 @@ fetch_b1:
|
||||
// mod==00b, rm==4, base!=5
|
||||
goto modrm_done;
|
||||
}
|
||||
// (mod == 0x40), mod==01b or (mod == 0x80), mod==10b
|
||||
seg = sreg_mod1or2_base32[base];
|
||||
}
|
||||
|
||||
// (mod == 0x40), mod==01b
|
||||
if (mod == 0x40) {
|
||||
if (ilen < remain) {
|
||||
// 8 sign extended to 32
|
||||
i->modRMForm.displ32u = (Bit8s) *iptr++;
|
||||
ilen++;
|
||||
goto modrm_done;
|
||||
}
|
||||
else {
|
||||
return(-1);
|
||||
}
|
||||
}
|
||||
|
||||
get_32bit_displ:
|
||||
|
||||
// (mod == 0x80), mod==10b
|
||||
if ((ilen+3) < remain) {
|
||||
i->modRMForm.displ32u = FetchDWORD(iptr);
|
||||
iptr += 4;
|
||||
ilen += 4;
|
||||
goto modrm_done;
|
||||
}
|
||||
else {
|
||||
return(-1);
|
||||
if (mod == 0x40) // mod==01b, rm==4
|
||||
goto get_8bit_displ;
|
||||
// (mod == 0x80), mod==10b, rm==4
|
||||
goto get_32bit_displ;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user