| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
|
| |
To see traces on stdout, set the global `Dump_trace` to true.
Thanks Max Bernstein for the feedback.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
We read() a character from stdin and write() it out to stdout, saving it
to a global variable in between.
ELF binaries are inefficient; you can ask for a low alignment, but the
kernel may not be able to handle it. If you set up a high alignment then
you end up wasting an increasing amount of space in each segment
because of the constraint that the offset bear some relationship with
the loaded address.
|
| |
|
|
|
|
|
|
|
| |
Reorganize layers to introduce the translation workflow right at the start.
We also avoid duplicating parsing code. Programs are always parsed into
the `program` data structure.
|
|
|
|
|
|
|
|
|
| |
Let's minimize the alignment requirements of each segment's offset.
It'll make binaries take less room later. Otherwise we may need to pad
lots of 0s for segments after the first.
Generated ELF binaries continue to work natively (except ex4, but that
was already not working).
|
| |
|
| |
|
| |
|
|
|
|
| |
Fix CI.
|
|
|
|
|
|
| |
Minimize memory footprint while running subx ELF binaries. We don't use
memory before address 0x08048000, so we don't need to allocate space for
it.
|
|
|
|
|
|
|
|
| |
ex4 now writes to the (global) data segment, rather than trying to write
to the code segment.
We still need to specify the other segments in the generated ELF,
though.
|
|
|
|
| |
Encapsulate RAM management.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
|
| |
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.
|