about summary refs log tree commit diff stats
path: root/subx/021translate.cc
Commit message (Collapse)AuthorAgeFilesLines
* 4395Kartik Agaram2018-07-241-7/+19
|
* 4361Kartik Agaram2018-07-161-1/+1
|
* 4359Kartik Agaram2018-07-161-3/+11
|
* 4358 - verify alignment of generated ELF binaryKartik Agaram2018-07-161-0/+6
|
* 4357Kartik Agaram2018-07-161-1/+3
|
* 4356 - subx: first program with a data segmentKartik Agaram2018-07-161-3/+3
| | | | | | | | | | | 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.
* 4354Kartik Agaram2018-07-161-0/+4
|
* 4350Kartik Agaram2018-07-151-69/+58
| | | | | | | 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.
* 4343Kartik Agaram2018-07-141-1/+1
| | | | | | | | | 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).
* 4342Kartik Agaram2018-07-111-3/+3
|
* 4341Kartik Agaram2018-07-101-0/+1
|
* 4338 - preliminary support for data segmentsKartik Agaram2018-07-101-3/+3
|
* 4334Kartik Agaram2018-07-101-4/+1
| | | | Fix CI.
* 4332Kartik Agaram2018-07-091-2/+4
| | | | | | 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.
* 4330 - start allocating data/stack/heap segmentsKartik Agaram2018-07-081-1/+1
| | | | | | | | 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.
* 4327Kartik Agaram2018-07-081-1/+1
| | | | Encapsulate RAM management.
* 4318Kartik Agaram2018-07-061-3/+2
| | | | | | | | 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.
* 4316Kartik Agaram2018-07-061-4/+5
| | | | | | 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.
* 4311 - subx running binaries with global variablesKartik Agaram2018-07-031-1/+1
| | | | | | | | | | | | | 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.
* 4308Kartik Agaram2018-07-031-3/+3
| | | | | | | 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.
* 4307Kartik Agaram2018-07-031-90/+4
| | | | Undo 4306.
* 4306 - architecture sketchKartik Agaram2018-07-021-4/+90
| | | | | | | 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.
* 4300 - get set up to unit test translatorKartik Agaram2018-06-301-0/+3
|
* 4298 - framework for translating SubX programsKartik Agaram2018-06-301-5/+44
|
* 4291 - stop copying the ELF header into memoryKartik Agaram2018-06-301-3/+3
| | | | | | | 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.
* 4290Kartik Agaram2018-06-301-2/+3
| | | | Clarify a few happy accidents.
* 4289 - beginnings of a translator to ELFKartik Agaram2018-06-301-0/+96
The source 'language' is still entirely open. We'll see how it evolves as I write programs in machine code.