Commit Graph

5 Commits (68ce32a6dfa46e184362a635ffc79fab2b08e7b2)

Author SHA1 Message Date
James T. Martin 68ce32a6df
Slightly unfuck codegen for relative jumps and blocks.
Still pretty horribly broken. I was generating dispacements
backwards, failing to emit stuff like the beginning of
loops, the logic for `if` jumps was backwards, etc.
I was also completely forgetting to increment file_here
for appends. I don't remember what all I did; check the diff.
2022-10-19 12:21:46 -07:00
James T. Martin 1383484e06
No assertions fail during codegen (lang.c) for test file.
The generated executable is still incorrect
for reasons which I have not yet investigated,
but this is still a step forward.
2022-10-17 11:45:38 -07:00
James T. Martin 8808c41250
Factor out executable format handling into a new file. 2022-09-10 22:06:21 -07:00
James T. Martin 57aa667000
Completely rewrite stack management.
Now we always use the stack instead of keeping a TOS register.
This is very inefficient, but I'll worry about register
allocation later.

The new block model is inspired by x86's `enter` and `leave`
instructions. I intend to support nested procedures at some point
in the future.
2022-09-06 19:47:46 -07:00
James T. Martin 4e06f8d00f
Separate instruction encoding into a separate file.
I describe the intended file structure in comments
at the top of each file.
2022-09-06 02:20:10 -07:00