aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.zig
Commit message (Collapse)AuthorAge
* don't use s0 for saved valuesMathias Magnusson2025-08-03
|
* use saved rregisters when neededMathias Magnusson2025-07-31
| | | | & store and restore saved registers on the stack
* implement `==`Mathias Magnusson2025-07-30
|
* store parameter on the stackMathias Magnusson2025-07-30
|
* store local variables on the stackMathias Magnusson2025-07-29
|
* make parameters usableMathias Magnusson2025-07-29
|
* continue continuing procedure callsMathias Magnusson2025-07-29
|
* continue implementing procedure callsMathias Magnusson2025-07-24
| | | | | | multiple procedures can now exist, but you cannot call them, the first one is the "main" procedure since it happens to be placed first in the binary, and all procedures end with an exit system call
* begin implementing procedure callsMathias Magnusson2025-07-22
| | | | | | | the register allocator does not consider the fact that called procedures probably clobber t-registers. also, the way i refer to the built in functions is cursed. it barely works now and won't when you can define procedures
* implement comparisonsMathias Magnusson2025-07-03
|
* make in-memory instruction a little nicer to work withMathias Magnusson2025-07-01
|
* make local variables work separately from temporary valuesMathias Magnusson2025-06-17
|
* begin implementing if expressionsMathias Magnusson2025-06-04
| | | | | | registers are used over block boundaries though, which doesn't work very well so i turned off register freeing to make it look like it works (unless you create more than 12 values total)
* make print procedure no longer set its input to 0Mathias Magnusson2025-06-04
|
* add { blocks } with scoped local variablesMathias Magnusson2025-06-03
|
* remove the need for explicit discard instructionsMathias Magnusson2025-06-02
| | | | | | | by also considering an instruction's destination register(s) to be uses and when cleaning up registers, also cleaning up those from previous instructions (specifically this is the output of the last instruction if it is not used anywhere)
* add read_int built in procedureMathias Magnusson2025-06-02
|
* codegen: use s registers instead of tMathias Magnusson2025-06-02
| | | | | | | doesn't make any difference yet and I don't know exactly when to use what when it starts to matter. but binary ninja thought that syscalls could override t registers (which is not the case) so this makes decompilations slightly nicer
* make print return integer lengthMathias Magnusson2025-06-02
|
* dont set quotient in every loop iteration in integer print procedureMathias Magnusson2025-06-02
|
* add identifiers, procedure calls and a built in print procedureMathias Magnusson2025-06-01
|
* codegen: fix some small bugsMathias Magnusson2025-06-01
|
* codegen: add RV64M extensionMathias Magnusson2025-06-01
|
* add subtractionMathias Magnusson2025-06-01
|
* codegen: make register allocation fail with error rather than returning nullMathias Magnusson2025-06-01
|
* codegen integer literals correctlyMathias Magnusson2025-05-31
| | | | This was not as easy as one would expect ☠️
* Refactor codegen a bitMathias Magnusson2025-05-31
|
* actually codegen the provided codeMathias Magnusson2025-05-31
| | | | | | ... well, since all we can do is to add integer literals, we produce code for the calculations and then perform the exit syscall with the result
* write a riscy little elfMathias Magnusson2025-05-30
|
* create initial simple elf fileMathias Magnusson2025-05-29