about summary refs log tree commit diff stats
path: root/subx/apps
Commit message (Collapse)AuthorAgeFilesLines
* add is-label blocknc2019-07-032-3/+46
|
* updates to survey - part of compute-offsets implementednc2019-07-033-247/+382
|
* subx/survey: now computing label addressesKartik Agaram2019-07-022-47/+65
|
* .Kartik Agaram2019-07-022-12/+31
| | | | | subx/survey/compute-addresses: Now computing segment starting addresses correctly.
* .Kartik Agaram2019-07-022-5/+5
|
* .Kartik Agaram2019-07-021-4/+8
|
* error in pseudocode for compute-offsetsKartik Agaram2019-07-021-1/+3
|
* .Kartik Agaram2019-07-012-33/+46
| | | | Now tracing segment names correctly.
* .Kartik Agaram2019-07-011-0/+27
|
* .Kartik Agaram2019-07-012-0/+24
|
* .Kartik Agaram2019-07-012-14/+15
| | | | | | Make `compute-addresses` less clever. Stop striding from the middle of one row to the next. This way we'll also obviate the need for indexing backwards from a pointer in the next commit.
* some primitives for emitting tracesKartik Agaram2019-07-019-1/+447
| | | | | | | | | | | | | | Kinda hacky, but might scale enough for machine code. This was really hard to debug. Single tests passed, but when I ran all tests I got breakage because tests long before (from the 056trace layer) were not cleaning up properly. My instinct was to call clear-stream on Trace-stream, which was wrong (the trace didn't have the wrong contents, it was literally a bad object). It was also wrong in a counter-productive way: calling clear-stream on a real Trace stream (which is the size of a page of memory) takes a long time in emulated mode.
* .Kartik Agaram2019-07-018-0/+0
|
* unsigned comparison for addresses in more placesKartik Agaram2019-07-019-2/+2
|
* .Kartik Agaram2019-07-011-2/+2
|
* .Kartik Agaram2019-07-011-1/+1
| | | | Fix some comments.
* add test datanc2019-06-291-1/+10
|
* Implement is-label?nc2019-06-291-0/+75
|
* .Kartik Agaram2019-06-282-0/+3
|
* initial draft of solution for 'compute-addresses'Kartik Agaram2019-06-286-15/+331
| | | | No trace statements yet, so we don't know if it works.
* .Kartik Agaram2019-06-285-44/+44
|
* .Kartik Agaram2019-06-287-0/+0
| | | | Clean up CI.
* .Kartik Agaram2019-06-282-12/+155
| | | | | Flesh out final test some more. We also now have a new family of primitives for writing non-strings to input streams in tests.
* pseudocode skeletons for all functionsKartik Agaram2019-06-132-7/+152
|
* .Kartik Agaram2019-06-131-1/+36
|
* flesh out survey testsKartik Agaram2019-06-122-15/+219
|
* .Kartik Agaram2019-06-128-37/+0
| | | | | Now that we don't have to edit code to run a single test, delete that commented out fragment everywhere.
* .Kartik Agaram2019-06-091-7/+7
|
* .Kartik Agaram2019-06-088-0/+0
|
* Fix stale `initialize-trace-stream`Kartik Agaram2019-06-089-5/+278
|
* .Kartik Agaram2019-06-082-0/+0
|
* .Kartik Agaram2019-06-088-0/+0
| | | | Simplify `string-equal`.
* implement compute-widthnc2019-06-082-270/+357
|
* added tests for compute-widthnc2019-06-081-0/+112
|
* start fleshing out trace support some moreKartik Agaram2019-06-057-0/+0
| | | | | I think the path to readable tests for survey.subx passes through white-box tests.
* .Kartik Agaram2019-05-2711-135/+142
| | | | | | 'get-or-insert-stream' is now the more generic 'get-or-insert' that can handle tables of any value type. But callers have to be careful to cast values to the right type.
* .Kartik Agaram2019-05-266-385/+278
|
* new primitive: check-array-equalKartik Agaram2019-05-267-0/+0
|
* new primitive: parse-array-of-intsKartik Agaram2019-05-2512-0/+45
| | | | | | | | | | Mostly for tests. For every new type we want to compare in a test, we're now going to start using some primitive that can parse its value from string. In this manner we can get syntax for literals in machine code. Open question: parsing aggregates of aggregates. Like an array of structs. This is the first time we allocate from the heap in standard library tests. So we now need to start initializing the heap in all our apps.
* .Kartik Agaram2019-05-2510-18/+0
| | | | | hoist 'Heap' variable into the std library in anticipation of the parse-array-of-ints primitive.
* new primitive: array-equal?Kartik Agaram2019-05-257-0/+0
|
* new primitive for tests: check-string-equalKartik Agaram2019-05-257-0/+0
|
* .Kartik Agaram2019-05-241-7/+6
|
* .Kartik Agaram2019-05-201-0/+0
|
* .Kartik Agaram2019-05-191-0/+6
| | | | add lengths to data blobs
* initial skeleton for survey.subxKartik Agaram2019-05-182-0/+297
| | | | | | | | Start of the final phase needed to implement SubX in SubX: $ cat files.subx ... |dquotes |assort |pack |survey |hex > a.elf survey.subx is responsible for assigning addresses to labels and segments.
* 5189Kartik Agaram2019-05-187-0/+0
| | | | Fix CI.
* support the new segment syntax in assort.subxKartik Agaram2019-05-172-51/+35
| | | | | | | | | | | Now all implemented phases of the SubX translator in SubX support the new syntax: ✓ hex.subx (no changes required) survey.subx (not yet started) ✓ pack.subx (fixed here) ✓ assort.subx ✓ dquotes.subx (has failing tests for other reasons)
* another phase that supports the new segment syntaxKartik Agaram2019-05-172-18/+18
| | | | | | | | | | Current state: ✓ hex.subx (no changes required) survey.subx ✓ pack.subx (fixed here) assort.subx ✓ dquotes.subx (has failing tests for other reasons)
* start of new syntax for segment headersKartik Agaram2019-05-172-26/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Right now SubX defines headers with the following syntax: ``` === ... ``` The `...` can be either a numeric address or a name. Numeric addresses are useful for tests where we want to check addresses of individual instructions. Names are useful in real programs where we want to add to a segment in many places. This approach has long seemed a mess. It's hard to explain, and there's a certain amount of historical evolution that led to it that should be irrelevant to comprehend the current state of the codebase. I started out assuming the first segment was always code, before adding the special names 'code' and 'data'. We pretend to support more than two segments but we don't really. To simplify the code and explanation we'll move to a new syntax: ``` === <name> <address> ``` Code will always belong in the special name 'code', but it no longer has to be first. We need to migrate both our SubX-in-SubX phases and the C++ version. The plan is to start from the top down and update bootstrapping phases that've already been built (see commit 5102 for the list of phases). This commit updates pack.subx. Current state: ✓ hex.subx (no changes required) survey.subx ✓ pack.subx (fixed here) assort.subx dquotes.subx