This is the mail archive of the
cgen@sourceware.org
mailing list for the CGEN project.
Simulator and 24 Bit instructions
- From: Ronald Hecht <ronald dot hecht at uni-rostock dot de>
- To: cgen at sourceware dot org
- Date: Mon, 31 Jul 2006 10:46:12 +0200
- Subject: Simulator and 24 Bit instructions
Hello,
I'm having now problems with 24 Bit instructions in the simulator. I
tracked down the issue to common/sim-trace.c. In
sim_cgen_disassemble_insn() I found
if (insn_bit_length <= 32)
base_length = insn_bit_length;
else
base_length = min (cd->base_insn_bitsize, insn_bit_length);
switch (base_length)
{
case 0 : return; /* fake insn, typically "compile" (aka "invalid") */
case 8 : insn_value = insn_buf.bytes[0]; break;
case 16 : insn_value = T2H_2 (insn_buf.shorts[0]); break;
case 32 : insn_value = T2H_4 (insn_buf.words[0]); break;
default: abort ();
}
So 24 Bit instructions are a problem. I hacked
case 24 : insn_value = (T2H_4 (insn_buf.words[0]) / 256) &
0x00ffffff; break;
and it works for me. But I think this might be a problem on big endian
machines or is this hack ok?
Thanks in advance
Ronald