about summary refs log tree commit diff stats
path: root/subx/028translate.cc
Commit message (Collapse)AuthorAgeFilesLines
* 5478 - disallow programs without 'data' segmentsKartik Agaram2019-07-251-0/+6
| | | | | | | | | Now all known discrepancies between C++ and SubX translators are fixed. If a SubX program builds with C++, it should also build fine with just SubX. (If it doesn't build with C++, all bets are off. The self-hosted SubX translator has negligible error-detection or handling.)
* 5477Kartik Agaram2019-07-251-2/+4
|
* 5472 - disallow programs without `Entry` labelsKartik Agaram2019-07-251-2/+8
| | | | | | | | | This makes the C++ translator more consistent with the self-hosted translator. We go through some contortions to continue supporting unit tests without 'Entry' labels. But we still want to throw good errors when translating .subx files at the commandline.
* switch to new syntax for segment headers in C++Kartik Agaram2019-05-181-4/+5
|
* 4987 - support `browse_trace` tool in SubXKartik Agaram2019-02-251-0/+3
| | | | | | | | | | | | | | | | | | I've extracted it into a separate binary, independent of my Mu prototype. I also cleaned up my tracing layer to be a little nicer. Major improvements: - Realized that incremental tracing really ought to be the default. And to minimize printing traces to screen. - Finally figured out how to combine layers and call stack frames in a single dimension of depth. The answer: optimize for the experience of `browse_trace`. Instructions occupy a range of depths based on their call stack frame, and minor details of an instruction lie one level deeper in each case. Other than that, I spent some time adjusting levels everywhere to make `browse_trace` useful.
* 4981 - no, go back to 3 phasesKartik Agaram2019-02-181-3/+4
| | | | | | | | | | | | | Considering how much trouble a merge phase would be (commit 4978), it seems simpler to just add the extra syntax for controlling the entry point of the generated ELF binary. But I wouldn't have noticed this if I hadn't taken the time to write out the commit messages of 4976 and 4978. Even if we happened to already have linked list primitives built, this may still be a good idea considering that I'm saving quite a lot of code in duplicated entrypoints.
* 4761Kartik Agaram2018-11-231-1/+1
| | | | | Bugfix: I forgot about ELF segment offsets when implementing VMAs. Eventually segments grew large enough that I started seeing overlaps.
* 4678Kartik Agaram2018-10-101-0/+2
| | | | | | | | | A debugging aid: 'subx --map translate' dumps a mapping from functions to addresses to a file called "map", and 'subx --map run' loads the mapping in "map", augmenting debug traces. Let's see how much this helps. Debugging machine code has been pretty painful lately.
* 4661Kartik Agaram2018-10-041-1/+1
| | | | | Make segment management a little more consistent between initial segments and add-on segments (using `mmap`).
* 4637 - subx: support multiple input filesKartik Agaram2018-10-011-1/+1
|
* 4624Kartik Agaram2018-09-301-11/+38
| | | | | | | | Start requiring a '-o' flag to designate the output binary when translating. Things currently get funky if you pass in multiple inputs, but that's ok. This is the first step to supporting multiple input files for a single output binary.
* 4620Kartik Agaram2018-09-301-1/+4
|
* 4551Kartik Agaram2018-09-201-0/+1
| | | | | | | | Running reset() doesn't seem necessary so far for the translate sub-command, but it's likely to expose us to weird bugs. Immediately, it requires toggling `Dump_trace` in different places to print traces while translating vs while running.
* 4532Kartik Agaram2018-09-011-28/+5
| | | | Make segment names a separate transform.
* 4531 - automatically compute segment addressesKartik Agaram2018-09-011-8/+32
|
* 4482Kartik Agaram2018-08-041-0/+159