Commit Graph

22 Commits

Author SHA1 Message Date
Aryadev Chavali
e9eead1177 Symbols may now include digits in lexer
This is mostly so labels get to have digits.  This won't affect number
tokens as that happens before symbols.
2023-11-03 21:50:55 +00:00
Aryadev Chavali
b5a1582976 Added a start address (equivalent to main) to assembler
Creates a jump address to the label delegated by "global" so program
starts at that point.
2023-11-03 19:01:31 +00:00
Aryadev Chavali
6c4469958e Implemented CALL(_STACK) and RET on the assembler 2023-11-02 23:29:23 +00:00
Aryadev Chavali
bd39c2b283 Made lexer more error prone so parser is less
Lexer now will straight away attempt to eat up any type or later
portions of an opcode rather than leaving everything but the root.
This means checking for type in the parser is a direct check against
the name rather than prefixed with a dot.

Checks are a bit more strong to cause more tokens to go straight to
symbol rather than getting checked after one routine in at on the
parser side.
2023-11-02 23:29:07 +00:00
Aryadev Chavali
9afeed6d61 Made separate tokens for JUMP_ABS and JUMP_STACK
Makes more sense, don't need to fiddle around with strings as much in
the parser due to this!
2023-11-02 20:54:26 +00:00
Aryadev Chavali
114fb82990 Removed instruction OP_JUMP_REGISTER
Not necessary when you can just push the relevant word onto the stack
then just do OP_JUMP_STACK.
2023-11-02 20:41:36 +00:00
Aryadev Chavali
d5e311c9d4 Started work on preprocessing jump addresses 2023-11-02 20:31:22 +00:00
Aryadev Chavali
740627b12d Implemented MALLOC_STACK and SUB in the assembler 2023-11-01 22:56:40 +00:00
Aryadev Chavali
90e04542a2 Implemented stack versions of MGET and MSET in assembler 2023-11-01 22:09:39 +00:00
Aryadev Chavali
44125d7ad9 Implemented OP_MSIZE into lexer/parser of ASM 2023-11-01 21:47:19 +00:00
Aryadev Chavali
7564938113 Implemented lexer and parser for new memory management instructions 2023-11-01 21:40:25 +00:00
Aryadev Chavali
83678ad29a Add MULT to lexer and parser for assembler 2023-11-01 18:09:00 +00:00
Aryadev Chavali
93d234cd48 Lexer now returns more descriptive tokens
More useful tokens, in particular for each opcode possible.  This
makes parsing a simpler task to reason as now we're just checking
against an enum rather than doing a string check in linear time.

It makes more sense to do this at the tokeniser as the local data from
the buffer will be in the cache most likely as the buffer is
contiguously allocated.  While it will always be slow to do linear
time checks on strings, when doing it at the parser we're having to
check strings that may be allocated in a variety of different places.
This means caching becomes a harder task, but with this approach we're
less likely to have cache misses as long as the buffer stays there.
2023-11-01 15:09:47 +00:00
Aryadev Chavali
0f0a1c7699 Allow hex literals for numbers
As strto(ul|ll) allow the parsing of hex literals of the form `0x`, we
allow lexing of hex literals which start with `x`.

They're lexed into C hex literals which work for strtol.
2023-10-31 22:27:53 +00:00
Aryadev Chavali
75dc36cd19 Lexer now returns errors on failure
Currently only for invalid character literals, but still a possible
problem.
2023-10-31 20:39:26 +00:00
Aryadev Chavali
191fe5c6b8 Ignore comments (using semicolons) in lexer
Easier to do it here than at the parser.
2023-10-28 18:19:33 +01:00
Aryadev Chavali
d2429aa549 Introduced a column and line for each token
Accurate error reporting can be introduced using this.
2023-10-28 18:19:30 +01:00
Aryadev Chavali
dca51106a2 Added support in lexer for negative numbers
Though we deal with unsigned numbers internally, it should be possible
to read and manipulate negative numbers through 2s complement.  Later
on we'll add support for signed operations via 2s complement, so this
should be allowed.
2023-10-26 11:17:01 +01:00
Aryadev Chavali
b152365561 Lexer forces uppercase for symbols 2023-10-26 10:22:53 +01:00
Aryadev Chavali
a07b571da2 Auto fill licenses 2023-10-26 08:01:26 +01:00
Aryadev Chavali
7bf6b53230 Unified literal for numbers, main program now tokenises 2023-10-26 07:15:52 +01:00
Aryadev Chavali
94abb9e3d4 Separated lexer from main file in asm 2023-10-25 21:43:13 +01:00