Skip to content

Backward-incompatible instruction format changes

Pre-release
Pre-release
Compare
Choose a tag to compare
@kulp kulp released this 10 Mar 12:44
· 1472 commits to develop since this release

This version breaks backward binary compatibility with previous releases with respect to assembled tenyr source. The changes were made to again permit an all-ones instruction to effectively trap, by indirectly jumping to the top address of memory. The type3 instruction was changed to take (instead of only a 24-bit immediate) a register and a 20-bit immediate to add to it.

Line coverage was set up using coveralls.io. Coverage reported online is currently much lower than true coverage, since the Travis-CI builders do not have an easy path to SDL2 and thus cannot test much of the device code.

A simple C++ JIT compiler was added using AsmJit – it is faster than the interpreter by 2-4x, but most of the speedup in the future will come from a reworking of the devices to be asynchronous to CPU execution. The JIT is an optional external library, keeping the main tsim binary small and unencumbered with C++ dependencies.

Many bugs were resolved and features were added, and the parser was polished to an unnecessary level of glow. The deprecated .ascii directive was removed. The parser was made left-recursive so that objects of 5000+ instructions can now compile. Input and output formats were improved, and the memh format is now capable of input as well as output. The disassembler implementation was significantly simplified. A total guarantee on the bijection of assembly <-> disassembly is now provided and tested.

More tests were added to the test suite, and the test suite was reorganised. The incomplete forth/ code is compiled as part of the test suite to ensure compilation bitrot does not occur.