Fixed immediate byte accounting bug.

--HG--
extra : convert_revision : ee5275da14a2923b9a525ae5b5c582c15df4608a
This commit is contained in:
Gabe Black
2007-07-22 02:34:52 +00:00
parent bff4f765f5
commit 47b0242618
2 changed files with 14 additions and 9 deletions

View File

@@ -72,7 +72,6 @@ namespace X86ISA
immediateCollected = 0;
emi.immediate = 0;
displacementCollected = 0;
emi.displacement = 0;
emi.modRM = 0;
@@ -359,14 +358,16 @@ namespace X86ISA
{
State nextState = ErrorState;
getImmediate(displacementCollected,
getImmediate(immediateCollected,
emi.displacement,
displacementSize);
DPRINTF(Predecoder, "Collecting %d byte displacement, got %d bytes.\n",
displacementSize, displacementCollected);
displacementSize, immediateCollected);
if(displacementSize == displacementCollected) {
if(displacementSize == immediateCollected) {
//Reset this for other immediates.
immediateCollected = 0;
//Sign extend the displacement
switch(displacementSize)
{
@@ -411,6 +412,9 @@ namespace X86ISA
if(immediateSize == immediateCollected)
{
//Reset this for other immediates.
immediateCollected = 0;
//XXX Warning! The following is an observed pattern and might
//not always be true!