Skip to content

v3.2.2

Choose a tag to compare

@eliminmax eliminmax released this 06 Feb 18:46
· 625 commits to main since this release

This version mostly consists of fixes to issues that were present in both the C and Rust versions of eambfc, which where caught with improvements to testing in the Rust version.

Fixes

  • the arm64 backend now properly encodes register-to-register mov instructions
    • in the context of eambfc, what should have been mov dst, src was being encoded as (orr dst, x15, src), which has the same effect so long as the x15 register was set to zero, which it always was when testing, both with QEMU and on bare metal. It now encodes to mov dst, src, which is technically an extended mnemonic for orr dst, xzr, src.
  • The x86_64 backend now properly uses the full 64 bits of the address register when zeroing out a tape cell - this would only be a problem if the memory address was higher than the 32-bit integer limit, which is unlikely, given that eambfc does not produce position-independent code.
  • Encoding of immediate values larger than the 32-bit integer limit is fixed for the s390x backend

The internal structure is now slightly cleaner, to make it easier to address such bugs in the future, should they be found