Backward-incompatible instruction format changes
Pre-releaseThis 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.