about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* 4350Kartik Agaram2018-07-1516-290/+489
| | | | | | | 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.
* 4349Kartik Agaram2018-07-152-0/+26
|
* 4348Kartik Agaram2018-07-151-1/+2
|
* 4347Kartik Agaram2018-07-158-374/+374
|
* 4346Kartik Agaram2018-07-151-0/+4
|
* 4345Kartik Agaram2018-07-151-21/+57
|
* 4344Kartik Agaram2018-07-151-2/+2
|
* 4343Kartik Agaram2018-07-145-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-112-3/+5
|
* 4341Kartik Agaram2018-07-101-0/+1
|
* 4340Kartik Agaram2018-07-105-41/+123
| | | | Start using data segments in scenarios.
* 4339Kartik Agaram2018-07-104-101/+101
|
* 4338 - preliminary support for data segmentsKartik Agaram2018-07-104-9/+38
|
* 4337Kartik Agaram2018-07-102-59/+44
| | | | | | | | Return to the usual whitespace-skipping istreams. No need to go beyond word-based parsing. This exercise reinforces the amount of duplication between load_program() and transform_immediate().
* 4336Kartik Agaram2018-07-101-2/+2
|
* 4335Kartik Agaram2018-07-101-1/+1
|
* 4334Kartik Agaram2018-07-102-10/+13
| | | | Fix CI.
* 4333Kartik Agaram2018-07-101-1/+1
| | | | Fix a warning in CI.
* 4332Kartik Agaram2018-07-092-2/+5
| | | | | | 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.
* 4331Kartik Agaram2018-07-081-0/+3
| | | | Fix CI.
* 4330 - start allocating data/stack/heap segmentsKartik Agaram2018-07-084-2/+12
| | | | | | | | 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.
* 4329Kartik Agaram2018-07-082-3/+0
| | | | | | | | 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.
* 4328Kartik Agaram2018-07-081-12/+14
| | | | Insert an indirection to avoid over-allocating memory for RAM.
* 4327Kartik Agaram2018-07-0810-58/+94
| | | | Encapsulate RAM management.
* 4326 - new example: read() from stdinKartik Agaram2018-07-073-0/+28
| | | | | Currently only runs in emulated mode. Likely a paging issue, writing data to code page. I'm not checking the return value.
* 4325Kartik Agaram2018-07-074-4/+11
|
* 4324 - new example: add first ten numbersKartik Agaram2018-07-072-0/+23
| | | | Result has to be small enough to fit in AL so exit() can return it.
* 4323Kartik Agaram2018-07-074-4/+33
|
* 4322Kartik Agaram2018-07-072-1/+1
|
* 4321Kartik Agaram2018-07-075-16/+46
| | | | | | | 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.
* 4320Kartik Agaram2018-07-073-4/+3
| | | | Fix a few more typos in example programs.
* 4319Kartik Agaram2018-07-071-1/+1
|
* 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.
* 4317 - example program: simple additionKartik Agaram2018-07-062-0/+13
|
* 4316Kartik Agaram2018-07-065-11/+15
| | | | | | 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.
* 4315Kartik Agaram2018-07-062-1/+1
|
* 4314Kartik Agaram2018-07-061-0/+1
|
* 4313 - some helpers for managing test binariesKartik Agaram2018-07-067-0/+105
| | | | I'm getting sick of hitting the <Tab> key.
* 4312 - fix one of the test binariesKartik Agaram2018-07-062-1/+1
|
* 4311 - subx running binaries with global variablesKartik Agaram2018-07-037-4/+77
| | | | | | | | | | | | | 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.
* 4310Kartik Agaram2018-07-031-0/+1
| | | | Temporarily do all prints in hex.
* 4309Kartik Agaram2018-07-034-6/+2
| | | | Simplify a couple of test programs.
* 4308Kartik Agaram2018-07-034-8/+8
| | | | | | | 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.
* 4305Kartik Agaram2018-07-011-0/+4
|
* 4304Kartik Agaram2018-07-012-6/+6
|
* 4303 - subx: first real transformKartik Agaram2018-07-013-5/+79
| | | | We'll see if this is useful. Mostly just stretching our legs.
* 4302 - a more elaborate pass-through phaseKartik Agaram2018-06-302-3/+35
| | | | Starting to work out the skeleton every phase needs to have.
* 4301 - confirm that translation framework worksKartik Agaram2018-06-301-0/+8
| | | | All tests continue to pass after a trivial translation phase.