[Libre-soc-dev] Compressed instructions

Alexandre Oliva oliva at gnu.org
Sun Nov 22 18:04:18 GMT 2020

Hello, Cole,

Thanks for the info and for the appreciation.

I finally had a click last night, in which the 10-bit encoding I kept
hearing about but couldn't find documented anywhere made sense was the
very insn that switched to 16-bit mode, rather than something entirely
different that I couldn't tell whether was preexisting or something else
we were working on.  Now I think I have a solid picture.  We may have:

  <32-bit insn>
  <10-bit insn>
  <16-bit insn>
  <more 16-bit insns>
  <16-bit insn with bits to switch back to 32-bit mode>
  <32-bit insn>
This means we do have the problem of, by just looking at the bits at a
certain location, not knowing how it ought to be decoded.  That may be
trouble for the disassembler, but given we spend 6 bits just for the
mode-switch, I very much doubt it would be viable and wise to make pairs
of 16-bit instructions immediately recognizable as such, rather than as
a single 32-bit instruction, by their encoding.

Since the extra bit needed to tell how to interpret the code stream is
dynamic, in a status register, we will need to find some other way for a
disassembler to identify 16-bit-encoded code ranges.  This will likely
not be very unreliable :-(

Alexandre Oliva, happy hacker  https://FSFLA.org/blogs/lxo/
   Free Software Activist         GNU Toolchain Engineer
        Vim, Vi, Voltei pro Emacs -- GNUlius Caesar

More information about the Libre-soc-dev mailing list