Skip to content

v1.1

Compare
Choose a tag to compare
@catharanthus catharanthus released this 11 Jan 18:46
· 34 commits to master since this release

This release introduces a minor but technically breaking hardware change: the START_ADDR generic, which used to be 30-bit, has been for convenience extended to a full 32-bit word; the two least significant bits are ignored.

The other breaking change affects the assembly language syntax. Previously all symbols used to be public, and multiple modules could not define symbols with the same name. As of now only symbols explicitly exported using the #export directive are public. #extern directive has been replaced by #import.

Other notable changes include:

  • A new instruction, lcs (Load Constant Short), has been added, which loads a 21-bit sign extended constant to a register. Unlike lc, it is encoded as a single word and takes one cycle to execute.
  • Optimizations in the divider unit. Division instructions (divs and divu) now take one fewer cycle to execute (modulo instructions are unaffected).
  • LXP32 assembly language now supports a new instruction alias, neg (Negate), which is equivalent to sub dst, 0, src.