Age | Commit message (Collapse) | Author | |
---|---|---|---|
2023-10-31 | Introduced signed versions of common types | Aryadev Chavali | |
For each type T there is the signed version s_T | |||
2023-10-31 | Fixed README for change in inst module | Aryadev Chavali | |
2023-10-31 | Moved inst module to lib | Aryadev Chavali | |
As it has no dependencies on vm specifically, and it's more necessary for any vendors who wish to target the virtual machine, it makes more sense for inst to be a lib module rather than a vm module. | |||
2023-10-31 | Implemented new types of EQ, forced all comparators to push bytes | Aryadev Chavali | |
Just need to call their unsigned versions. All comparators should push bytes as it makes return types uniform. | |||
2023-10-31 | vm_execute_all: Print every cycle on VERBOSE >= 2, just print final state ↵ | Aryadev Chavali | |
otherwise Changed VERBOSE checks to ensure a degree of information. | |||
2023-10-31 | Created routines for new comparator opcodes (not implemented) | Aryadev Chavali | |
Will cause error if used currently, which is fine. | |||
2023-10-31 | Introduced new instructions for comparison | Aryadev Chavali | |
Comparing signed and unsigned versions of numbers. Same for EQ as well. Notice the irregular pattern of BYTE, CHAR, INT, HWORD,LONG,WORD as OPCODE_IS_TYPE requires the subcodes to be surrounded by BYTE and WORD. | |||
2023-10-31 | asm/main logs are now indented and look prettier | Aryadev Chavali | |
2023-10-31 | Lexer now returns errors on failure | Aryadev Chavali | |
Currently only for invalid character literals, but still a possible problem. | |||
2023-10-31 | parse_word deals with characters now | Aryadev Chavali | |
Just takes the character literally as a number. | |||
2023-10-31 | Changed asm/parser instruction push-reg->push.reg | Aryadev Chavali | |
2023-10-29 | Make Verbose a universal flag | Aryadev Chavali | |
All objects target LIB anyway, so VERBOSE is a universal macro for this code base. | |||
2023-10-29 | Added a "usage" message and colours for assembler | Aryadev Chavali | |
Prints useful and pretty messages when verbose being at least 1. | |||
2023-10-29 | Fixed bug where JUMP_REGISTER couldn't be in bytecode read | Aryadev Chavali | |
2023-10-29 | Fixed bug where reading operand bytecode may stop prematurely | Aryadev Chavali | |
This is due to checking for equality instead of just greater than in darr->used against darr->available. | |||
2023-10-29 | Added some examples to instruction-test for positive/negative literals | Aryadev Chavali | |
Use the push.* instructions to see this. | |||
2023-10-29 | Introduced an example source file for all instructions | Aryadev Chavali | |
Provides calling conventions, ensures parser and lexer are working correctly. Will be updated as more instructions are introduced and supported in the assembler. | |||
2023-10-29 | Auto-fill copyright notice in examples/fib.c | Aryadev Chavali | |
2023-10-28 | Introduce error reporting in asm/main | Aryadev Chavali | |
Pretty simple implementation, I've stopped printing the tokens cos I think the lexer is done. | |||
2023-10-28 | asm/parser supports all opcodes, introduced parse errors | Aryadev Chavali | |
Introduced some functions to parse differing types of opcodes. Use the same style of a.b.c... for namespacing or type specification for certain opcodes. Bit hacky and not tested, but does work. Parse errors can be reported with an exact location using the token column, line. | |||
2023-10-28 | Ignore comments (using semicolons) in lexer | Aryadev Chavali | |
Easier to do it here than at the parser. | |||
2023-10-28 | Introduced a column and line for each token | Aryadev Chavali | |
Accurate error reporting can be introduced using this. | |||
2023-10-28 | Added macro to do safe subtractions on a word | Aryadev Chavali | |
Default C just lets overflows occur for subtraction, so this macro will default to 0 if the subtraction causes an overflow. | |||
2023-10-26 | Plugged in asm/parser to asm/main | Aryadev Chavali | |
Just prints instructions so far. | |||
2023-10-26 | Implemented a rudimentary parser with support for 4 instruction types | Aryadev Chavali | |
2023-10-26 | Added support in lexer for negative numbers | Aryadev Chavali | |
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 | Fixed bug where printing hword of an instruction prints number not hex | Aryadev Chavali | |
This is an easy fix. | |||
2023-10-26 | asm/main now uses TOKEN_STREAM_AT | Aryadev Chavali | |
2023-10-26 | Lexer forces uppercase for symbols | Aryadev Chavali | |
2023-10-26 | Updated README for targeting VM | Aryadev Chavali | |
2023-10-26 | Makefile now prints dependencies on successful compilation | Aryadev Chavali | |
2023-10-26 | Moved base functions from inst.c to dedicated file | Aryadev Chavali | |
Doesn't make sense for them to be in the VM module when they have a more general purpose now. | |||
2023-10-26 | vm/main takes a filename as input to execute bytecode | Aryadev Chavali | |
Also prints a usage for incorrect usage. | |||
2023-10-26 | Auto fill licenses | Aryadev Chavali | |
2023-10-26 | Unified literal for numbers, main program now tokenises | Aryadev Chavali | |
2023-10-25 | Started working on a parser | Aryadev Chavali | |
No implementations yet | |||
2023-10-25 | Separated lexer from main file in asm | Aryadev Chavali | |
2023-10-24 | Wrote lexer for assembly | Aryadev Chavali | |
Pretty simple tokeniser, doesn't do a lot and needs to error check better. | |||
2023-10-24 | Removed assertion in darr_read_file | Aryadev Chavali | |
If an empty file is read, we want to deal with it in later user code rather than just failing immediately. | |||
2023-10-23 | Starting development on assembly language | Aryadev Chavali | |
2023-10-23 | Make root directory an include path, set #include's properly | Aryadev Chavali | |
Easier to write includes now just using < with the module name, in comparison to using relative paths. | |||
2023-10-23 | Reintroduced example fib.c via examples/ folder | Aryadev Chavali | |
2023-10-23 | Added lib folder for general stuff, introduced as target to Makefile | Aryadev Chavali | |
2023-10-23 | Implemented simple example of a for loop in main | Aryadev Chavali | |
2023-10-23 | src->vm, Makefile is now a bit more abstracted and pretty colours | Aryadev Chavali | |
Changed folder names for sake of clarity (will be introducing a new build target soon), and Makefile can now easily support more targets. | |||
2023-10-23 | Remove unnecessary log message | Aryadev Chavali | |
2023-10-23 | Added and implemented OP_JUMP_IF_* | Aryadev Chavali | |
Performs a jump when the (BYTE|HWORD|WORD) at the top of the stack is non zero. | |||
2023-10-23 | Extracted code that performs a jump into its own routine | Aryadev Chavali | |
Checks if the operand given is a well defined program address, then performs the jump. | |||
2023-10-23 | Fixed bug in vm_mov(byte|hword) where registers aren't set properly | Aryadev Chavali | |
This is because we just OR the bits into the specific byte of the word. This means the previous state may leave artefacts as the OR doesn't clear the bits away. To do so, we apply a bit mask to clear the specified byte(s) of the word, then perform the OR. | |||
2023-10-23 | Moved macros to extract nth (byte|hword) from a word to base.h | Aryadev Chavali | |