Age | Commit message (Collapse) | Author |
|
|
|
handled.
- Added a function called fix_symtree(), which when
called. will rearrange the symbol tree based on the
order they're declared in by the token stream.
The reason I wrote this, was to make sure the symbol
tree could be printed correctly.
- Optimized print_symtree() to now use tail recursion.
- Started adding all of the SuB Suite's structs.
|
|
emulator's assembler.
- Make the symbol table a doublely linked list, in
both ways.
- Optimized the memcopy() function.
- Changed the benchmark timing, to now use a timer, and
stops once the timer reaches zero.
When the timer hits zero, it sends SIGALRM to the
main function, which tells the emulator that the
benchmark is done.
|
|
- Simplified the effective address functions.
- Made SuBEditor a bit faster.
- JSR, and RTS now support using the RS prefix, which
is used to specify the return address size, with an
RS prefix of 0 being a return address size of 64
bits, rather than 8 bits.
|
|
spaces, and tabs before the current token.
Along with also now storing a sub-token count which
is used in case the token's secondary id is meant to
be treated as a sub-token.
- Added suppor for saving the number of blank lines
before the current tokenized line.
|
|
expressions to the emulator's assembler.
|
|
instruction formatting simpler.
- Refactored the instruction table of the emulator's
assembler, it now has two parts, the addressing mode
bits, and the base value.
The base value is what's used to generate the actual
opcode, with the addressing mode bits telling the
assembler what addressing modes this instruction
supports.
The reason for doing this was to use less space. For
comparison, the previous version used 870 bytes for
the instruction table, while the new version uses
only 222 bytes. The new version is nearly 4 times
smaller than the pervious version.
- The B register based ALU instructions now use their
own addressing mode, and are specified by using 'b'
as the operand for those instructions.
For example, to add the Accumulator with the B
register, you now use "ADC B" instead of "AAB".
|
|
- Changed the file structure of the SuB Suite, so that
all variable declarations, symbols, and constants
are in a single file.
- Moved the C library functionss into a separate
file, and made them use stack frames.
- Added support for using the emulator's assembler for
realtime debugging, to enter it, get in to stepping
mode by pressing Ctrl+s, press any other key, then
press F1,
The reason for having to press some other key before
pressing F1 is because it only allows entering the
assembler when the keyboard is not ready.
- Added the ".res" directive to the emulator's
assembler, the ".res" directive tells the assembler
to reserve however many bytes specified by the
operand.
- Fixed some bugs in the emulator's assembler.
|
|
- Fixed some bugs with the push, and pull functions
- Fixed a bug in the assembler.
|
|
- Added a new preifx called the OF prefix, which adds
the contents of a specific register to the current
operand.
- Added a table generator, which parses opcode table
csv files.
|
|
|
|
|
|
Thanks to BieHDC for pointing this out to me.
|
|
- Fix some bugs with strings.
- Started to refactor the instruction functions.
- Added support for using RS prefixes on the memory
based increment, and decrement instructions.
- Started work on SuBAsm's lexer.
Have fun looking at this, BieHDC. :)
|
|
- Fixed a bug in SuBAsm.
|
|
- Refactored the symbol, and fixup table to now use a
linked list
- Added support for local symbols to the assembler.
- Rewrote SuBEditor, and SuBAsm to use local symbols.
|
|
|
|
support for comma separated values.
The assembler now uses a linked list of tokenized
lines, each containing a linked list of tokens for
that line.
I also moved all of the large tables into the higher
parts of memory, in order to free up the lower part of
memory for the user.
Comma sepparated values only work with directives, and
only with the byte", word, dword, and qword directives.
I also added support for getting the upper, and lower
halves of an address. The tokens for both of those are
'<', and '>' respectively.
|