summaryrefslogtreecommitdiff
path: root/test/full-pipeline
Commit message (Collapse)AuthorAge
* lex: empty file is equivalent to EOLDavid Phillips2019-08-04
| | | | | | | | | lex() returning NULL is used to convey an error case but having not allocated any tokens in the case of an empty input file isn't an error case. This patch causes lex to treat an empty token stream after successfully examining a file as just a single EOL token. This is a fair approximation of an empty file for this assembler's purposes, and results in the correct behaviour of an empty output file.
* Add initial emulator implementationDavid Phillips2019-08-04
| | | | | | | This emulator provides a rough way for binaries designed for this CPU to be executed in a virtual/emulated CPU for testing purposes. This patch also adds a small test setup for automated assembly, execution and checking of register postconditions for programs.
* input_bin: Refactor disassembly to allow input from buffersDavid Phillips2019-08-03
| | | | | | | | | This somewhat complicates the previous file dissassembly logic, but paves the way for disassembling instructions from buffered memory. This will be required for emulation. Also adds some test cases which nabbed bugs during the development and testing of this change.
* Refactor disassembler to move data through instruction listDavid Phillips2019-08-03
| | | | | | | | This refactors the disassembler into two stages with the list of struct instruction (currently also output by the parse stage) as an "intermediate language" between disassembly and assembler output. This should make these units, especially the "machine code => IL" section, more reusable for future soft emulation work.
* Add simple loop disasm testDavid Phillips2019-08-03
|
* Make full test use unique-per-test file namesDavid Phillips2019-08-03
| | | | | This allows for inspection of test failures when the script is run with noclean and the failing test is not the last test in the run.
* Rename .test files to .asmDavid Phillips2019-08-03
|
* Add some (failing) testsDavid Phillips2019-08-03
|
* Tidy test runner scriptDavid Phillips2019-08-03
| | | | | | | Makes no-clean mode optional, and non-default. By default, we probably want failed test runs not to leave things lying around, since most of test running for now will be for test development. Perhaps once tests are stable, we can switch back to no-clean by default to catch bugs.
* Add test for asm-disasm-asm, fix bug with labelsDavid Phillips2019-08-03
This adds a support script for future expansion of an asm->disasm->asm series of tests, which will at minimum ensure some parity between the assembler and disassembler. Lower level tests to ensure correct behaviour rather than just symmetrical behaviour belong in another set of tests. This patch also fixes the assembler's behaviour around numeric labels. Many other assemblers support entirely numeric labels, and the output of the disassembler includes them. The assembler has been adjusted to lex a probably-numeric as a label if it is at the start of the line. Otherwise, old label behavour and old numeric behaviour is left in place.