Was going to have a WordMethodExpression, to match ByteMethodExpression,

but decided we'd be better off with just one IntMethodExpression class.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@652 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
urchlay 2005-07-15 02:30:47 +00:00
parent 09dd155287
commit 31e17b4627
8 changed files with 32 additions and 31 deletions

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: CpuDebug.hxx,v 1.3 2005-07-15 02:19:07 urchlay Exp $
// $Id: CpuDebug.hxx,v 1.4 2005-07-15 02:30:47 urchlay Exp $
//============================================================================
#ifndef CPU_DEBUG_HXX
@ -26,8 +26,7 @@ class EquateList;
#include "DebuggerSystem.hxx"
// pointer types for CpuDebug instance methods
typedef uInt8 (CpuDebug::*CPUDEBUG_BYTE_METHOD)();
typedef uInt16 (CpuDebug::*CPUDEBUG_WORD_METHOD)();
typedef int (CpuDebug::*CPUDEBUG_INT_METHOD)();
// call the pointed-to method on the (global) CPU debugger object.
#define CALL_CPUDEBUG_METHOD(method) ( ( Debugger::debugger().cpuDebug().*method)() )
@ -53,7 +52,9 @@ class CpuDebug : public DebuggerSystem
int dPeek(int address);
int pc() { return mySystem->m6502().PC; }
uInt8 a() { return mySystem->m6502().A; }
int a() { return mySystem->m6502().A; }
int x() { return mySystem->m6502().X; }
int y() { return mySystem->m6502().Y; }
void setPC(int pc);
void setSP(int sp);

View File

@ -13,14 +13,14 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: ByteMethodExpression.cxx,v 1.1 2005-07-15 02:19:07 urchlay Exp $
// $Id: IntMethodExpression.cxx,v 1.1 2005-07-15 02:30:47 urchlay Exp $
//============================================================================
#include "Expression.hxx"
#include "ByteMethodExpression.hxx"
#include "IntMethodExpression.hxx"
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ByteMethodExpression::ByteMethodExpression(CPUDEBUG_BYTE_METHOD method)
IntMethodExpression::IntMethodExpression(CPUDEBUG_INT_METHOD method)
: Expression(0, 0)
{
myMethod = method;

View File

@ -13,11 +13,11 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: ByteMethodExpression.hxx,v 1.1 2005-07-15 02:19:07 urchlay Exp $
// $Id: IntMethodExpression.hxx,v 1.1 2005-07-15 02:30:47 urchlay Exp $
//============================================================================
#ifndef BYTEMETHOD_EXPRESSION_HXX
#define BYTEMETHOD_EXPRESSION_HXX
#ifndef INTMETHOD_EXPRESSION_HXX
#define INTMETHOD_EXPRESSION_HXX
#include "Debugger.hxx"
#include "CpuDebug.hxx"
@ -25,16 +25,16 @@
/**
@author B. Watson
@version $Id: ByteMethodExpression.hxx,v 1.1 2005-07-15 02:19:07 urchlay Exp $
@version $Id: IntMethodExpression.hxx,v 1.1 2005-07-15 02:30:47 urchlay Exp $
*/
class ByteMethodExpression : public Expression
class IntMethodExpression : public Expression
{
public:
ByteMethodExpression(CPUDEBUG_BYTE_METHOD method);
IntMethodExpression(CPUDEBUG_INT_METHOD method);
int evaluate() { return CALL_CPUDEBUG_METHOD(myMethod); }
private:
CPUDEBUG_BYTE_METHOD myMethod;
CPUDEBUG_INT_METHOD myMethod;
};
#endif

View File

@ -5,7 +5,7 @@ MODULE_OBJS := \
src/debugger/DebuggerParser.o \
src/debugger/EquateList.o \
src/debugger/Expression.o \
src/debugger/ByteMethodExpression.o \
src/debugger/IntMethodExpression.o \
src/debugger/ByteDerefExpression.o \
src/debugger/WordDerefExpression.o \
src/debugger/ConstExpression.o \

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: YaccParser.cxx,v 1.8 2005-07-15 02:19:07 urchlay Exp $
// $Id: YaccParser.cxx,v 1.9 2005-07-15 02:30:47 urchlay Exp $
//
// Based on code from ScummVM - Scumm Interpreter
// Copyright (C) 2002-2004 The ScummVM project
@ -32,7 +32,7 @@
#include "BinNotExpression.hxx"
#include "BinOrExpression.hxx"
#include "BinXorExpression.hxx"
#include "ByteMethodExpression.hxx"
#include "IntMethodExpression.hxx"
#include "ByteDerefExpression.hxx"
#include "WordDerefExpression.hxx"
#include "ConstExpression.hxx"
@ -174,7 +174,7 @@ int const_to_int(char *c) {
}
}
CPUDEBUG_BYTE_METHOD getByteSpecial(char *c) {
CPUDEBUG_INT_METHOD getSpecial(char *c) {
if(strcmp(c, "a") == 0)
return &CpuDebug::a;
@ -204,7 +204,7 @@ int yylex() {
case ST_IDENTIFIER:
{
CPUDEBUG_BYTE_METHOD meth;
CPUDEBUG_INT_METHOD meth;
char *bufp = idbuf;
*bufp++ = *c++; // might be a base prefix
@ -218,9 +218,9 @@ int yylex() {
if(Debugger::debugger().equates()->getAddress(idbuf) > -1) {
yylval.equate = idbuf;
return EQUATE;
} else if( (meth = getByteSpecial(idbuf)) ) {
yylval.byteMethod = meth;
return BYTE_METHOD;
} else if( (meth = getSpecial(idbuf)) ) {
yylval.intMethod = meth;
return INT_METHOD;
} else {
yylval.val = const_to_int(idbuf);
return NUMBER;

View File

@ -16,14 +16,14 @@ void yyerror(char *e) {
%union {
int val;
char *equate;
CPUDEBUG_BYTE_METHOD byteMethod;
CPUDEBUG_INT_METHOD intMethod;
Expression *exp;
}
/* Terminals */
%token <val> NUMBER
%token <equate> EQUATE
%token <byteMethod> BYTE_METHOD
%token <intMethod> INT_METHOD
/* Non-terminals */
%type <exp> expression
@ -74,6 +74,6 @@ expression: expression '+' expression { fprintf(stderr, " +"); $$ = new PlusExpr
| '(' expression ')' { fprintf(stderr, " ()"); $$ = $2; }
| NUMBER { fprintf(stderr, " %d", $1); $$ = new ConstExpression($1); }
| EQUATE { fprintf(stderr, " %s", $1); $$ = new EquateExpression($1); }
| BYTE_METHOD { fprintf(stderr, " (byteMeth)"); $$ = new ByteMethodExpression($1); }
| INT_METHOD { fprintf(stderr, " (intMethod)"); $$ = new IntMethodExpression($1); }
;
%%

View File

@ -5,7 +5,7 @@
# define NUMBER 257
# define EQUATE 258
# define BYTE_METHOD 259
# define INT_METHOD 259
# define LOG_OR 260
# define LOG_AND 261
# define LOG_NOT 262
@ -38,7 +38,7 @@ void yyerror(char *e) {
typedef union {
int val;
char *equate;
CPUDEBUG_BYTE_METHOD byteMethod;
CPUDEBUG_INT_METHOD intMethod;
Expression *exp;
} yystype;
# define YYSTYPE yystype
@ -132,7 +132,7 @@ static const short yyrline[] =
/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
static const char *const yytname[] =
{
"$", "error", "$undefined.", "NUMBER", "EQUATE", "BYTE_METHOD", "'-'",
"$", "error", "$undefined.", "NUMBER", "EQUATE", "INT_METHOD", "'-'",
"'+'", "'*'", "'/'", "'%'", "LOG_OR", "LOG_AND", "LOG_NOT", "'|'",
"'^'", "'&'", "SHR", "SHL", "'<'", "'>'", "GTE", "LTE", "NE", "EQ",
"DEREF", "UMINUS", "'~'", "'!'", "'@'", "'('", "')'", "statement",
@ -1063,7 +1063,7 @@ case 29:
break;
case 30:
#line 77 "stella.y"
{ fprintf(stderr, " (byteMeth)"); yyval.exp = new ByteMethodExpression(yyvsp[0].byteMethod); }
{ fprintf(stderr, " (intMethod)"); yyval.exp = new IntMethodExpression(yyvsp[0].intMethod); }
break;
}

View File

@ -5,7 +5,7 @@
typedef union {
int val;
char *equate;
CPUDEBUG_BYTE_METHOD byteMethod;
CPUDEBUG_INT_METHOD intMethod;
Expression *exp;
} yystype;
# define YYSTYPE yystype
@ -13,7 +13,7 @@ typedef union {
#endif
# define NUMBER 257
# define EQUATE 258
# define BYTE_METHOD 259
# define INT_METHOD 259
# define LOG_OR 260
# define LOG_AND 261
# define LOG_NOT 262