| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
Drop a safety net; we now assume that Memory is large enough for any
addresses we may encounter.
Dropping all comparisons with Mem.size() now makes our Memory_offset
indirection airtight.
|
|
|
|
| |
Insert an indirection to avoid over-allocating memory for RAM.
|
|
|
|
| |
Encapsulate RAM management.
|
|
|
|
|
| |
Currently only runs in emulated mode. Likely a paging issue, writing
data to code page. I'm not checking the return value.
|
| |
|
|
|
|
| |
Result has to be small enough to fit in AL so exit() can return it.
|
| |
|
| |
|
|
|
|
|
|
|
| |
Modify helpers to run either external examples in the subx/teensy/
directory, or my own examples in subx/ directory.
Now I have to say `run test5` instead of `run 5`, and so on.
|
|
|
|
| |
Fix a few more typos in example programs.
|
| |
|
|
|
|
|
|
|
|
| |
Simpler.
Now it's clear that what commit 4291 got wrong was an
alignment-violating address for both the entrypoint and the start of the
segment.
|
| |
|
|
|
|
|
|
| |
Second attempt at commit 4291. We'll now not copy the headers into
memory, but we'll still allocate space for them. Still some security
benefits, and I'm gaining confidence that I understand the ELF format.
|
| |
|
| |
|
|
|
|
| |
I'm getting sick of hitting the <Tab> key.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Learning to use the data segment.
Currently, subx can only run the teensy files generated from flat
assembler:
test4
test5
test7
This is not a priority to fix. These files are just useful references to
have around.
|
|
|
|
| |
Temporarily do all prints in hex.
|
|
|
|
| |
Simplify a couple of test programs.
|
|
|
|
|
|
|
| |
Undo 4291; turns out the generated ELF binary was no longer running
natively on 32-bit Linux. Even with p_align set to 0.
Agh, not worth my time.
|
|
|
|
| |
Undo 4306.
|
|
|
|
|
|
|
| |
Doesn't compile.
I'm still not sure how to represent types and global variables.
Types won't be in the final binary.
But globals will. Perhaps I should first figure out what that looks like.
|
| |
|
| |
|
|
|
|
| |
We'll see if this is useful. Mostly just stretching our legs.
|
|
|
|
| |
Starting to work out the skeleton every phase needs to have.
|
|
|
|
| |
All tests continue to pass after a trivial translation phase.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
As we add high-level constructs we'll start labeling low-level
constructs as unsafe, and highlighting them in red in our editor.
|
|
|
|
|
|
|
| |
No need for it once the program's loaded. And we keep programs from
running the header as code.
This also simplifies the header computation in the translator.
|
|
|
|
| |
Clarify a few happy accidents.
|
|
|
|
|
| |
The source 'language' is still entirely open. We'll see how it evolves
as I write programs in machine code.
|
|
|
|
| |
Give subx too the recent support for running a single test.
|
|
|
|
| |
Fix CI. Looks like 'std::' sometimes doesn't work.
|
|
|
|
| |
Make prints uniform.
|
| |
|
|
|
|
| |
Hopefully I won't need much more than exit, read and write.
|
| |
|
|
|
|
|
| |
We're now parsing the ELF spec more closely and better handling multiple
program header table entries.
|
| |
|
|
|
|
|
| |
I don't know how to tell nasm to generate an imm32. It's a minor stepping-stone
anyway; just emit the machine code directly.
|