/* INCLUDES ******************************************************************/
#include <ntoskrnl.h>
-#include <internal/kdb.h>
#define NDEBUG
#include <internal/debug.h>
case RpnOpNop:
DbgPrint("NOP,");
break;
-
+
case RpnOpImmediate:
DbgPrint("0x%I64x,", Op->Data.Immediate);
break;
-
+
case RpnOpBinaryOperator:
if (Op->Data.BinaryOperator == RpnBinaryOperatorAdd)
DbgPrint("+,");
else
DbgPrint("UNKNOWN OP,");
break;
-
+
case RpnOpRegister:
DbgPrint("%s,", RegisterToTrapFrame[Op->Data.Register].Name);
break;
-
+
case RpnOpDereference:
DbgPrint("[%s],",
(Op->Data.DerefMemorySize == 1) ? ("byte") :
)
);
break;
-
+
default:
DbgPrint("\nUnsupported Type: %d\n", Op->Type);
ul = Stack->Sp;
p++;
CharacterOffset++;
}
-
+
/* Check for end of expression */
if (p[0] == '\0' || p[0] == ')' || p[0] == ']')
break;
{
/* Remember operator */
Operator = p++;
- OperatorOffset = CharacterOffset++;;
-
+ OperatorOffset = CharacterOffset++;
+
/* Pop operator (to get the right operator precedence) */
HavePoppedOperator = FALSE;
if (*Operator == '*' || *Operator == '/' || *Operator == '%')
/* Copy register name/memory size */
while (isspace(p[--i2]));
- i2 = min(i2 + 1, sizeof (Buffer) - 1);
+ i2 = min(i2 + 1, (INT)sizeof (Buffer) - 1);
strncpy(Buffer, p, i2);
Buffer[i2] = '\0';
*ErrOffset = CharacterOffset;
return FALSE;
}
-
+
p += i;
CharacterOffset += i;
goto get_operand;
/* Skip closing brace/bracket */
pend++;
-
+
CharacterOffset += pend - p;
p = pend;
}
IsComparativeOp = TRUE;
RpnOp.Data.BinaryOperator = RpnBinaryOperatorEquals;
break;
-
+
case '!':
ASSERT(Operator[1] == '=');
IsComparativeOp = TRUE;
}
}
}
-
+
First = FALSE;
}
-
+
//end_of_expression:
if (ComparativeOpFilled && !RpnpPushStack(Stack, &ComparativeOp))
if (End != NULL)
*End = p;
-
+
return TRUE;
}
case RpnOpNop:
/* No operation */
break;
-
+
case RpnOpImmediate:
if (ValueStackPointer == RPN_VALUE_STACK_SIZE)
{
*ErrOffset = -1;
return FALSE;
}
-
+
*Result = ValueStack[0];
return TRUE;
}
OUT PCHAR ErrMsg OPTIONAL)
{
PRPN_STACK Stack = (PRPN_STACK)&RpnStack;
-
+
ASSERT(Expression != NULL);
ASSERT(TrapFrame != NULL);
ASSERT(Result != NULL);
}
memcpy(NewStack, Stack, Size);
NewStack->Size = NewStack->Sp;
-
+
return NewStack;
}