From 5c72e1874449c9088e822e0a02418e0642321a17 Mon Sep 17 00:00:00 2001 From: David Schleef Date: Wed, 24 Jun 2009 17:43:27 -0700 Subject: [PATCH] orc: fix some accumulator bugs --- orc/orcexecutor.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/orc/orcexecutor.c b/orc/orcexecutor.c index 1b25773..a3fc847 100644 --- a/orc/orcexecutor.c +++ b/orc/orcexecutor.c @@ -85,7 +85,7 @@ orc_executor_set_param_str (OrcExecutor *ex, const char *name, int value) int orc_executor_get_accumulator (OrcExecutor *ex, int var) { - return ex->accumulators[var]; + return ex->accumulators[var - ORC_VAR_A1]; } int @@ -113,6 +113,8 @@ orc_executor_emulate (OrcExecutor *ex) OrcStaticOpcode *opcode; OrcOpcodeExecutor opcode_ex; + ex->accumulators[0] = 0; + memset (&opcode_ex, 0, sizeof(opcode_ex)); for(i=0;in;i++){ @@ -187,6 +189,8 @@ orc_executor_emulate (OrcExecutor *ex) default: ORC_ERROR("unhandled size %d", program->vars[insn->dest_args[k]].size); } + } else if (var->vartype == ORC_VAR_TYPE_ACCUMULATOR) { + ex->accumulators[0] += opcode_ex.dest_values[k]; } else { ORC_ERROR("shouldn't be reached (%d)", var->vartype); } -- 2.7.4