change the types of the statement operands to unsigned short to clean up

most of the uses
This commit is contained in:
Bill Currie 2001-08-13 21:09:00 +00:00
parent 45fd3e084d
commit 283b0e1a21
3 changed files with 26 additions and 25 deletions

View file

@ -192,7 +192,7 @@ void PR_Opcode_Init (void);
typedef struct statement_s typedef struct statement_s
{ {
unsigned short op; unsigned short op;
short a,b,c; unsigned short a,b,c;
} dstatement_t; } dstatement_t;
typedef struct typedef struct

View file

@ -1186,14 +1186,16 @@ PR_LoadProgs (progs_t * pr, const char *progsname)
switch (st->op) { switch (st->op) {
case OP_IF: case OP_IF:
case OP_IFNOT: case OP_IFNOT:
if ((unsigned short) st->a >= pr->progs->numglobals if (st->a >= pr->progs->numglobals
|| st->b + i < 0 || st->b + i >= pr->progs->numstatements) || (short)st->b + i < 0
|| (short)st->b + i >= pr->progs->numstatements)
PR_Error PR_Error
(pr, "PR_LoadProgs: out of bounds IF/IFNOT (statement %d)\n", (pr, "PR_LoadProgs: out of bounds IF/IFNOT (statement %d)\n",
i); i);
break; break;
case OP_GOTO: case OP_GOTO:
if (st->a + i < 0 || st->a + i >= pr->progs->numstatements) if ((short)st->a + i < 0
|| (short)st->a + i >= pr->progs->numstatements)
PR_Error PR_Error
(pr, "PR_LoadProgs: out of bounds GOTO (statement %d)\n", (pr, "PR_LoadProgs: out of bounds GOTO (statement %d)\n",
i); i);
@ -1266,9 +1268,9 @@ PR_LoadProgs (progs_t * pr, const char *progsname)
case OP_SHR_F: case OP_SHR_F:
case OP_SHL_I: case OP_SHL_I:
case OP_SHR_I: case OP_SHR_I:
if ((unsigned short) st->a >= pr->progs->numglobals if (st->a >= pr->progs->numglobals
|| (unsigned short) st->b >= pr->progs->numglobals || st->b >= pr->progs->numglobals
|| (unsigned short) st->c >= pr->progs->numglobals) || st->c >= pr->progs->numglobals)
PR_Error PR_Error
(pr, "PR_LoadProgs: out of bounds global index (statement %d)\n", (pr, "PR_LoadProgs: out of bounds global index (statement %d)\n",
i); i);
@ -1279,8 +1281,8 @@ PR_LoadProgs (progs_t * pr, const char *progsname)
case OP_NOT_S: case OP_NOT_S:
case OP_NOT_FNC: case OP_NOT_FNC:
case OP_NOT_ENT: case OP_NOT_ENT:
if ((unsigned short) st->a >= pr->progs->numglobals if (st->a >= pr->progs->numglobals
|| (unsigned short) st->c >= pr->progs->numglobals) || st->c >= pr->progs->numglobals)
PR_Error PR_Error
(pr, "PR_LoadProgs: out of bounds global index (statement %d)\n", (pr, "PR_LoadProgs: out of bounds global index (statement %d)\n",
i); i);
@ -1301,8 +1303,8 @@ PR_LoadProgs (progs_t * pr, const char *progsname)
case OP_STORE_V: case OP_STORE_V:
case OP_STORE_I: case OP_STORE_I:
case OP_STOREP_I: case OP_STOREP_I:
if ((unsigned short) st->a >= pr->progs->numglobals if (st->a >= pr->progs->numglobals
|| (unsigned short) st->b >= pr->progs->numglobals) || st->b >= pr->progs->numglobals)
PR_Error PR_Error
(pr, "PR_LoadProgs: out of bounds global index (statement %d)\n", (pr, "PR_LoadProgs: out of bounds global index (statement %d)\n",
i); i);
@ -1319,7 +1321,7 @@ PR_LoadProgs (progs_t * pr, const char *progsname)
case OP_CALL8: case OP_CALL8:
case OP_DONE: case OP_DONE:
case OP_RETURN: case OP_RETURN:
if ((unsigned short) st->a >= pr->progs->numglobals) if (st->a >= pr->progs->numglobals)
PR_Error PR_Error
(pr, "PR_LoadProgs: out of bounds global index (statement %d)\n", (pr, "PR_LoadProgs: out of bounds global index (statement %d)\n",
i); i);

View file

@ -77,22 +77,21 @@ PR_PrintStatement (progs_t * pr, dstatement_t *s)
if (s->op == OP_IF || s->op == OP_IFNOT) if (s->op == OP_IF || s->op == OP_IFNOT)
Con_Printf ("%sbranch %i (%i)", Con_Printf ("%sbranch %i (%i)",
PR_GlobalString (pr, (unsigned short) s->a), s->b, PR_GlobalString (pr, s->a), s->b,
addr + s->b); addr + s->b);
else if (s->op == OP_GOTO) { else if (s->op == OP_GOTO) {
Con_Printf ("branch %i (%i)", s->a, addr + s->a); Con_Printf ("branch %i (%i)", s->a, addr + s->a);
} else if ((unsigned int) (s->op - OP_STORE_F) < 6) { } else if ((unsigned int) (s->op - OP_STORE_F) < 6) {
Con_Printf ("%s", PR_GlobalString (pr, (unsigned short) s->a)); Con_Printf ("%s", PR_GlobalString (pr, s->a));
Con_Printf ("%s", Con_Printf ("%s",
PR_GlobalStringNoContents (pr, (unsigned short) s->b)); PR_GlobalStringNoContents (pr, s->b));
} else { } else {
if (s->a) if (s->a)
Con_Printf ("%s", PR_GlobalString (pr, (unsigned short) s->a)); Con_Printf ("%s", PR_GlobalString (pr, s->a));
if (s->b) if (s->b)
Con_Printf ("%s", PR_GlobalString (pr, (unsigned short) s->b)); Con_Printf ("%s", PR_GlobalString (pr, s->b));
if (s->c) if (s->c)
Con_Printf ("%s", Con_Printf ("%s", PR_GlobalStringNoContents (pr, s->c));
PR_GlobalStringNoContents (pr, (unsigned short) s->c));
} }
Con_Printf ("\n"); Con_Printf ("\n");
} }
@ -269,9 +268,9 @@ PR_LeaveFunction (progs_t * pr)
The interpretation main loop The interpretation main loop
*/ */
#define OPA (pr->pr_globals[(unsigned short) st->a]) #define OPA (pr->pr_globals[st->a])
#define OPB (pr->pr_globals[(unsigned short) st->b]) #define OPB (pr->pr_globals[st->b])
#define OPC (pr->pr_globals[(unsigned short) st->c]) #define OPC (pr->pr_globals[st->c])
extern cvar_t *pr_boundscheck; extern cvar_t *pr_boundscheck;
@ -596,14 +595,14 @@ PR_ExecuteProgram (progs_t * pr, func_t fnum)
// ================== // ==================
case OP_IFNOT: case OP_IFNOT:
if (!OPA.integer_var) if (!OPA.integer_var)
st += st->b - 1; // offset the s++ st += (short)st->b - 1; // offset the s++
break; break;
case OP_IF: case OP_IF:
if (OPA.integer_var) if (OPA.integer_var)
st += st->b - 1; // offset the s++ st += (short)st->b - 1; // offset the s++
break; break;
case OP_GOTO: case OP_GOTO:
st += st->a - 1; // offset the s++ st += (short)st->a - 1; // offset the s++
break; break;
case OP_CALL0: case OP_CALL0:
case OP_CALL1: case OP_CALL1: