about summary refs log tree commit diff stats
path: root/subx
Commit message (Collapse)AuthorAgeFilesLines
* 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-073-4/+20
|
* 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.
* 4300 - get set up to unit test translatorKartik Agaram2018-06-302-1/+5
|
* 4299Kartik Agaram2018-06-301-0/+1
|
* 4298 - framework for translating SubX programsKartik Agaram2018-06-302-8/+47
|
* 4297Kartik Agaram2018-06-301-0/+1
|
* 4296Kartik Agaram2018-06-301-0/+4
|
* 4295Kartik Agaram2018-06-301-1/+1
|
* 4292 - start a Vim syntax file for our 'language'Kartik Agaram2018-06-302-0/+26
| | | | | As we add high-level constructs we'll start labeling low-level constructs as unsafe, and highlighting them in red in our editor.
* 4291 - stop copying the ELF header into memoryKartik Agaram2018-06-304-8/+8
| | | | | | | 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-305-4/+107
| | | | | The source 'language' is still entirely open. We'll see how it evolves as I write programs in machine code.
* 4288Kartik Agaram2018-06-282-1/+20
| | | | Give subx too the recent support for running a single test.
* 4287Kartik Agaram2018-06-281-1/+1
| | | | Fix CI. Looks like 'std::' sometimes doesn't work.
* 4286Kartik Agaram2018-06-281-25/+33
| | | | Make prints uniform.
* 4285Kartik Agaram2018-06-281-1/+1
|
* 4284 - implement first syscall for subxKartik Agaram2018-06-282-0/+20
| | | | Hopefully I won't need much more than exit, read and write.
* 4283Kartik Agaram2018-06-281-1/+1
|