glm94
|
f38da9cc74
|
A bit of cleanup.
|
2022-10-04 21:05:15 +00:00 |
|
glm94
|
33309a2759
|
Updated the Instruction's structure and updated the Parser accordingly.
|
2022-10-04 20:37:47 +00:00 |
|
glm94
|
1f7989533b
|
Fixed a bug in the SymbolsTable where it wouldn't update its size.
|
2022-10-03 20:11:04 -05:00 |
|
glm94
|
cd1258a724
|
Fixed various Parser bugs.
|
2022-10-03 19:58:44 -05:00 |
|
glm94
|
be91e3c112
|
Updated the parser to better handle parameters, sort of and including a string length assembly program to use as a test for the whole assembler.
|
2022-10-03 21:26:28 +00:00 |
|
glm94
|
706f480e31
|
The Scanner will now check for empty lines (is the previous token and the current token a new line?) and simply not emit a NewLine Token.
|
2022-10-03 19:40:00 +00:00 |
|
glm94
|
a949007c75
|
Updated the ISA so the program will correctly see things like 'load', 'inc' and 'dec'.
|
2022-10-03 16:56:39 +00:00 |
|
glm94
|
a0d5d62a34
|
Fixed a bug in the Scanner when parsing a hex number, still not super robust but it'll work.
|
2022-10-03 15:20:31 +00:00 |
|
glm94
|
f7cd87f13f
|
Started reworking the Parser to simplify how instructions will be represented. It will act like a 'first pass' that will do grammar checks but not verify the parameters of the opcodes.
|
2022-10-02 22:54:18 -05:00 |
|
glm94
|
55f4c32764
|
Missed this for the Scanner fix.
|
2022-10-02 22:12:16 -05:00 |
|
glm94
|
097eca383b
|
Fixed a bug with the Scanner adding a blank line via a single NewLine Token when a file starts with a block of comments.
|
2022-10-01 20:43:55 -05:00 |
|
glm94
|
984683bfc5
|
Minor adjustment to Figure 1.1
|
2022-09-29 22:57:12 -05:00 |
|
glm94
|
0f42ad2997
|
Updated the ISA and added links in the table of contents.
|
2022-09-29 22:11:19 -05:00 |
|
glm94
|
63438b551b
|
Got the scanner running again. Seems to be picking up punctuation, labels, identifiers and strings as expected.
|
2022-09-29 21:32:08 -05:00 |
|
glm94
|
e94e486e18
|
More refinements to the loading data instructions. I am truly bad at this whole thing...
|
2022-09-29 20:42:37 +00:00 |
|
glm94
|
2b71ac05a0
|
Added a note about a proposal regarding assembly language design.
|
2022-09-27 17:46:50 +00:00 |
|
glm94
|
02cf72902e
|
Updated the load instructions.
|
2022-09-26 22:13:48 -05:00 |
|
glm94
|
afa84076c8
|
Added a command to make generating an opcode table a one liner. Updated the ISA.
|
2022-09-23 19:36:27 +00:00 |
|
glm94
|
925f7703d6
|
Updated the ISA, hopefully I can get this all put together in a thought out way.
|
2022-09-22 20:49:20 +00:00 |
|
glm94
|
a82a4c23ad
|
Updated the docs.
|
2022-09-21 21:44:38 -05:00 |
|
glm94
|
f5c82d1c36
|
Added a LaTex document to put in writing how the machine should behave.
|
2022-09-21 16:23:11 +00:00 |
|
glm94
|
0b58e0124f
|
Some refactoring to update everything to use the new structures and some new considerations for how Symbols and Instructions shoudl be represented.
|
2022-09-15 22:14:38 -05:00 |
|
glm94
|
2ae60a607c
|
Incomplete, but I want to make sure the ideas I have here don't get wiped. Sadly this commit won't compile.
|
2022-09-15 21:29:27 +00:00 |
|
glm94
|
6d17dffcdf
|
Added a SymbolTable object (untested at the moment) and redefined the Symbol object. I think when a Symbol is made only the size of it should matter to the code that will assemble the final binary.
|
2022-09-08 20:56:02 +00:00 |
|
glm94
|
2518214585
|
Added a length attribute to the symbol.
|
2022-09-06 14:15:45 +00:00 |
|
glm94
|
7004fff659
|
This feels like a trainwreck but eh. Changed the way the opcodes are managed. Hopefully this is the right direction when I add support for multiple ASM files.
|
2022-09-01 18:46:59 +00:00 |
|
glm94
|
13f8ff194b
|
Smoothbrain indeed...
|
2022-08-30 22:48:49 -05:00 |
|
glm94
|
dac01ffd0c
|
Changed the TokenClass from opcode to nomic, a less smoothbrain name IMO and also frees up Opcode for a better use later on.
|
2022-08-30 22:06:50 -05:00 |
|
glm94
|
3c7056c5e6
|
The main function will now write out the output of the parser.
|
2022-08-29 21:23:02 +00:00 |
|
glm94
|
6c7b8d5356
|
Fixed a bug where CMP REG, REG wouldn't get encoded and a disassembler bug related to said CMP bug.
|
2022-08-29 19:29:34 +00:00 |
|
glm94
|
5f437b6869
|
Both the assembler and the disassembler should now support all the instructions I've layed out thus far.
|
2022-08-29 18:51:48 +00:00 |
|
glm94
|
e3b4293314
|
Fixed a bug in the parser where the size of the binary was too big.
|
2022-08-29 18:02:11 +00:00 |
|
glm94
|
ae1e73e00f
|
Fixed a bug to correct the location of symbols in the heap.
|
2022-08-29 16:00:02 +00:00 |
|
glm94
|
7385a807a5
|
Created a basic binary format to help guide the disassembler.
|
2022-08-29 15:57:14 +00:00 |
|
glm94
|
0d3f8a460e
|
Added more instructions for the parser to emit and refactored the code in doing so.
|
2022-08-28 15:37:56 -05:00 |
|
glm94
|
c2111e2b88
|
Added support for the ADD and SUB opcodes to the disassembler.
|
2022-08-28 13:08:18 -05:00 |
|
glm94
|
8e9d1aefe8
|
Fixed some disassembler issues. At least some instuctions are being disassembled correctly.
|
2022-08-26 21:43:03 -05:00 |
|
glm94
|
0785f21805
|
Added a disassembler which is still very buggy. Also fixed some bugs with the opcode mask getting function.
|
2022-08-26 21:41:02 +00:00 |
|
glm94
|
e4a191a17e
|
Refined the encoding some more.
|
2022-08-26 19:00:37 +00:00 |
|
glm94
|
eb5e2c506e
|
Got the start of encoding opcodes.
|
2022-08-26 18:27:41 +00:00 |
|
glm94
|
0d060248cb
|
Forgot about the bloody IN instruction...
|
2022-08-25 21:01:35 -05:00 |
|
glm94
|
80bea6f1a8
|
I'm dumb, fixed the CMP opcode overlap..
|
2022-08-25 20:57:33 -05:00 |
|
glm94
|
a96f485da6
|
I believe I have the bit patterns for my opcodes worked out.
|
2022-08-25 20:45:46 -05:00 |
|
glm94
|
88d550f344
|
Added unconditional jump opcode to my comment section.
|
2022-08-25 20:27:25 -05:00 |
|
glm94
|
0e53f9798f
|
Added a distinction between constant numbers and what are effectively memory addresses (i.e. strings and labels).
|
2022-08-25 19:47:16 -05:00 |
|
glm94
|
03d5660677
|
Seems I fixed the memory offset bugs, so far anyway...
|
2022-08-25 19:54:47 +00:00 |
|
glm94
|
4f6d5f652e
|
Made use of the Symbols Table, and started the proccess of determining the memory location of opcodes and variables.
|
2022-08-25 19:06:05 +00:00 |
|
glm94
|
64326937b1
|
Added a LineEnd token type.
|
2022-08-25 18:37:25 +00:00 |
|
glm94
|
89ab951c6a
|
Refactored the parsing code just a touch.
|
2022-08-24 21:23:14 +00:00 |
|
glm94
|
947de1d14c
|
Added support for declaring a variable with the '.db' directive. Address calculations still need to be done, but at the very least the variable's name is showing up in the symbols table.
|
2022-05-16 15:17:19 +00:00 |
|
glm94
|
3c4cce0883
|
Added assembler directives as a class of token.
|
2022-05-16 14:27:49 +00:00 |
|
glm94
|
5265666178
|
Got the Parser to, so far, correctly (minus memory leaks) parse out and report errors with opcodes and their parameters.
|
2022-05-12 23:16:02 -05:00 |
|
glm94
|
2de3538d80
|
Parser is now mostly setup for the 'peek and advance' pattern. Still having infinite loop issues somewhere though.
|
2022-05-12 21:30:02 +00:00 |
|
glm94
|
72525959f6
|
Reworked the tokens to include a broad class to make parameter matching a bit easier, and removed the hexadecimal distinction.
|
2022-05-12 20:26:14 +00:00 |
|
glm94
|
72abf6c4ab
|
Started work on rewriting the Parser.
|
2022-05-10 21:03:09 +00:00 |
|
glm94
|
fbef044905
|
Added some simple symbol handling to the Parser.
|
2022-05-06 18:55:22 +00:00 |
|
glm94
|
fc47bf2143
|
Fixed up the code a bit and fixed a memory leak bug (of course, there's still no good way to free Tokens but that'll be sorted out later).
|
2022-05-05 20:10:10 +00:00 |
|
glm94
|
8ec0b9b216
|
Code cleanup. Converting a number lexeme to a proper integer setup but not done yet. So number tokens don't have a valid value.
|
2022-05-05 16:12:33 +00:00 |
|
glm94
|
9fa48520c7
|
Added support for 'labels' in the Scanner.
|
2022-05-04 22:58:06 -05:00 |
|
glm94
|
caeaaefbf0
|
Fixed a bug where numbers weren't being added to the token list (I'm very dumb it seems) and added hexadecimal support to the scanner.
|
2022-05-04 22:37:49 -05:00 |
|
glm94
|
101f206dce
|
Hooked up punctuation detection.
|
2022-05-04 21:50:42 +00:00 |
|
glm94
|
859035da2a
|
Updated the scanner to parse registers, assembly keywords and identifiers.
|
2022-05-04 20:07:47 +00:00 |
|
glm94
|
2c9478d311
|
Attempting to declutter the lexer and tokenizer by rereolling them into the 'Scanner' object.
|
2022-05-03 21:20:38 +00:00 |
|
glm94
|
1900b504e7
|
Setup the assembler to use the new file reading code.
|
2022-04-28 22:24:10 -05:00 |
|
glm94
|
1968590654
|
Add a file utility to allow me to read in an entire file instead of doing so line by line.
|
2022-02-23 21:29:53 +00:00 |
|
glm94
|
1fd5c3af57
|
Fixed a bug with the opcode and register types not being set correctly.
|
2022-02-22 21:09:04 -06:00 |
|
glm94
|
19021ff782
|
Modified how registers and opcodes are represented. This commit is a bit buggy but doesn't crash and burn at least. I just wanted the new structs push out before making a bigger mess of things as I try to organize this all.
|
2022-02-17 21:35:57 -06:00 |
|
glm94
|
3d4ab57f05
|
Created the skeleton for the parser.
|
2022-02-07 15:33:58 +00:00 |
|
glm94
|
7c6e5e1541
|
Last bit of clean up before building the parser.
|
2022-02-02 20:43:25 +00:00 |
|
glm94
|
d39e37b078
|
Updated the lexer to pick out some more language specific grammar.
|
2022-02-02 19:18:27 +00:00 |
|
glm94
|
7a88d6e34d
|
Added code to detect assembler directives and did some minor code clean up.
|
2022-02-01 22:07:00 -06:00 |
|
glm94
|
ebc1d30c1c
|
Added a peek function to the tokenizer.
|
2022-01-31 22:06:52 +00:00 |
|
glm94
|
f88cfda90a
|
Added a dedicated function to the tokenizer for getting string literals.
|
2022-01-31 19:15:27 +00:00 |
|
glm94
|
375fd46045
|
Split up some code to more in line with what its actually doing.
|
2022-01-27 18:20:09 +00:00 |
|
glm94
|
f88613a160
|
Expanded the tokenizer to recognize some opcodes and registers.
|
2022-01-24 17:09:02 +00:00 |
|
glm94
|
2570c5cac0
|
Made some chanegs to the tokenizer to understand hexadecimal formatted numbers, along with some more language grammar primitives.
|
2022-01-23 21:54:06 -06:00 |
|
glm94
|
019a7f44a8
|
Cleaned up the tokenizer and setting the stage for more granular token types.
|
2022-01-21 21:17:37 +00:00 |
|
glm94
|
0636315166
|
Starting to get a basic structure for tokenizing. Currently TK_Number tokens are being generated successfully.
|
2022-01-21 19:35:32 +00:00 |
|
glm94
|
72f6ec12e0
|
Tokenizing now strips the double quotes from strings, leaving only the intended value.
|
2022-01-20 22:10:48 +00:00 |
|
glm94
|
b32e1bad7c
|
Fixed some bugs in the string tokenizer.
|
2022-01-20 21:21:18 +00:00 |
|
glm94
|
23d4bd8089
|
Included a check for commas in the whitespace splitter. Might rename that function but this is all just testing before refactoring so I won't rename things just yet.
|
2022-01-20 19:48:24 +00:00 |
|
glm94
|
99ebd82996
|
Experimenting with tokenizing strings. This commit just focuses on splitting strings up by whitespace.
|
2022-01-20 18:17:58 +00:00 |
|
glm94
|
479dc57ea8
|
Code cleanup in the List code. Possibly saved myself some headache in the future by using the right pointer type in the struct definition.
|
2022-01-18 16:28:49 +00:00 |
|
glm94
|
929f2a7f4b
|
Made the List generic, though more care needs to be taken when using it since memory leaks can happen when structs are used with it.
|
2022-01-17 17:21:40 +00:00 |
|
glm94
|
2c18b593ab
|
Expanded the assembly test code partially, and added some ideas on how to encode instructions.
|
2022-01-07 21:37:32 +00:00 |
|
glm94
|
8656ba7d0c
|
Fixed a bug where the last character of a line would be lost when generating a list of string tokens.
|
2022-01-05 22:51:56 +00:00 |
|
glm94
|
0b46ac2f54
|
Added some error handling in the List functions. Just trying to get a feel for how to handle memory allocation failures in C.
|
2022-01-05 16:51:26 +00:00 |
|
glm94
|
2d3b6f1858
|
Changed the signatures of some of the List functions to have the 'const' contract. I feel this makes more sense to have since these functions are to not modify all or some of their parameters. Plus it just feels right to have them defined this way.
|
2022-01-05 16:02:06 +00:00 |
|
glm94
|
08acc6af22
|
First stage of splitting up a source line complete. Next is tokenizing the list of string being generated.
|
2021-12-30 15:21:09 -06:00 |
|
glm94
|
4be3a4a7ea
|
Changed the 'AddListItem' function to make a copy of the char array that its sent to make the caller's life a bit easier.
|
2021-12-30 14:56:36 -06:00 |
|
glm94
|
168d8e1548
|
Created a list structure for strings. Should work for splitting lines of text up just before they're tokenized.
|
2021-12-30 14:28:02 -06:00 |
|
glm94
|
9c6b1d9057
|
Added very simple parsing logic.
|
2021-12-28 20:48:09 +00:00 |
|
glm94
|
5162804270
|
Initial commit, can read from a list of files passed.
|
2021-12-28 20:09:33 +00:00 |
|