| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
| |
These tools are currently fairly useless for real-world programming. Each of
them takes in either asm or binary, translates this to the internal intermediate
representation of a list of instruction structs, and then translates and outputs
in the same format that they took it in. These are mostly oly useful for testing
purposes, but may one day be useful if e.g. an optimiser stage is put in between
the input and output stages.
|
|
|
|
| |
I'm going to regret this
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
This patch makes the disassembler treat branch offsets as PC-relative rather
than absolute.
|
| |
|
| |
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|