about summary refs log tree commit diff stats
path: root/subx
Commit message (Collapse)AuthorAgeFilesLines
* 4364Kartik Agaram2018-07-171-1/+0
|
* 4363 - subx: first program using the stack segmentKartik Agaram2018-07-165-3/+57
| | | | | We allocate space for a local variable, read() a character from stdin to it, and write() it out to stdout.
* 4362Kartik Agaram2018-07-161-0/+1
|
* 4361Kartik Agaram2018-07-161-1/+1
|
* 4360Kartik Agaram2018-07-161-1/+1
|
* 4359Kartik Agaram2018-07-161-3/+11
|
* 4358 - verify alignment of generated ELF binaryKartik Agaram2018-07-162-1/+6
|
* 4357Kartik Agaram2018-07-161-1/+3
|
* 4356 - subx: first program with a data segmentKartik Agaram2018-07-166-9/+24
| | | | | | | | | | | 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.
* 4355Kartik Agaram2018-07-161-0/+1
|
* 4354Kartik Agaram2018-07-161-0/+4
|
* 4353Kartik Agaram2018-07-161-4/+2
|
* 4352 - subx: write() syscallKartik Agaram2018-07-161-1/+4
|
* 4351Kartik Agaram2018-07-164-0/+17
|
* 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-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
|