From b5f831ac51e12e41c27cde38bc07066e62edfd00 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Tue, 26 Nov 1996 20:40:19 +0000 Subject: [PATCH] * gencode.c, interp.c: Snapshot current simulator code. (crude) hashing works, along with dispatch to the OP_* functions. --- sim/mn10300/ChangeLog | 4 ++++ sim/mn10300/gencode.c | 25 ++++++++++++++++++++++--- sim/mn10300/mn10300_sim.h | 1 + 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/sim/mn10300/ChangeLog b/sim/mn10300/ChangeLog index 7f668298913..ca03f32d373 100644 --- a/sim/mn10300/ChangeLog +++ b/sim/mn10300/ChangeLog @@ -1,3 +1,7 @@ +Tue Nov 26 13:36:01 1996 Jeffrey A Law (law@cygnus.com) + + * gencode.c, interp.c: Snapshot current simulator code. + Mon Nov 25 12:46:38 1996 Jeffrey A Law (law@cygnus.com) * Makefile.in, config.in, configure, configure.in: New files. diff --git a/sim/mn10300/gencode.c b/sim/mn10300/gencode.c index d2f5e3b372c..543bce61961 100644 --- a/sim/mn10300/gencode.c +++ b/sim/mn10300/gencode.c @@ -95,8 +95,27 @@ write_opcodes () for (opcode = (struct mn10300_opcode *)mn10300_opcodes; opcode->name; opcode++) { - printf (" { 0x%x,0x%x,OP_%X,", - opcode->opcode, opcode->mask, opcode->opcode); + int size; + + if (opcode->format == FMT_S0) + size = 1; + else if (opcode->format == FMT_S1 + || opcode->format == FMT_D0) + size = 2; + else if (opcode->format == FMT_S2 + || opcode->format == FMT_D1) + size = 3; + else if (opcode->format == FMT_S4) + size = 5; + else if (opcode->format == FMT_D2) + size = 4; + else if (opcode->format == FMT_D4) + size = 6; + else + size = 7; + + printf (" { 0x%x,0x%x,OP_%X,%d,", + opcode->opcode, opcode->mask, opcode->opcode, size); Opcodes[curop++] = opcode->opcode; @@ -139,5 +158,5 @@ write_opcodes () printf ("}},\n"); } - printf ("{ 0,0,NULL,0,{0,0,0,0,0,0}},\n};\n"); + printf ("{ 0,0,NULL,0,0,{0,0,0,0,0,0}},\n};\n"); } diff --git a/sim/mn10300/mn10300_sim.h b/sim/mn10300/mn10300_sim.h index b18dee8c5d1..4170c26d278 100644 --- a/sim/mn10300/mn10300_sim.h +++ b/sim/mn10300/mn10300_sim.h @@ -50,6 +50,7 @@ struct simops long opcode; long mask; void (*func)(); + int length; int numops; int operands[16]; }; -- 2.30.2