Simulator and 24 Bit instructions

Ronald Hecht ronald.hecht@uni-rostock.de
Mon Jul 31 16:00:00 GMT 2006


Attached you will find my current cpu-file.

I'm having trouble to define the (add with carry)-instruction. If an 
carry occurs, the accu becomes zero. Would you please have a look?

Thanks
Ronald

Ronald Hecht wrote:

> 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
>

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: proc8.cpu
URL: <http://sourceware.org/pipermail/cgen/attachments/20060731/822f71fe/attachment.ksh>


More information about the Cgen mailing list