about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* 4909Kartik Agaram2019-01-052-19/+32
| | | | Improve error checking to warn on unexpected displacements as well.
* 4908Kartik Agaram2019-01-058-4/+41
| | | | | | | | Fix CI. a) Update canonical binaries. b) Fix an out-of-bounds access in `clear-stream`. This also required supporting a new instruction in `subx run` to load an imm8 into rm8.
* 4907Kartik Agaram2019-01-041-2/+2
|
* 4906 - helper to allocate streams on the heapKartik Agaram2019-01-042-0/+175
|
* 4905 - safe ptr lookup is now 6 instructionsKartik Agaram2019-01-042-25/+20
| | | | | | | | | | | | | The lines within '{}' can now be turned into a macro like `E_X = deref(E_X)`, parameterizing the register being modified. Assumes the input is in a register but also saved elsewhere, so it's safe to clobber and replace with the result. Compare commit 4894. Used to take 9 instructions, 8 of them making loads/stores. Now it's 6 instructions, 4 of them loads/stores (the one non-local load is unchanged, of course). Key is to not consume more registers so we don't have to push/pop them.
* 4904Kartik Agaram2019-01-041-1/+0
|
* 4903Kartik Agaram2019-01-031-2/+0
|
* 4902 - initial sketch, stage 2 of compilerKartik Agaram2019-01-031-0/+164
| | | | I've agonized over this for a week; high time I saved a snapshot.
* 4901Kartik Agaram2019-01-036-0/+0
|
* 4900Kartik Agaram2018-12-303-392/+381
| | | | | | | | | | | Finally really fix the CI failure of commit 4894. This is a remainder to forget my knowledge of stack addresses in the SubX VM when writing SubX programs. Otherwise my programs will work in the VM but not natively. The only assumptions a SubX program should make about its segment addresses are what's encoded in the ELF binary. Thanks to https://en.wikipedia.org/wiki/Address_space_layout_randomization, it can't know anything else.
* 4899Kartik Agaram2018-12-3031-158/+160
| | | | Bug in my linkify tool introduced in commit 4891.
* 4898Kartik Agaram2018-12-304-4/+4
|
* 4897Kartik Agaram2018-12-305-401/+565
|
* 4896Kartik Agaram2018-12-301-0/+0
| | | | Fix CI.
* 4895Kartik Agaram2018-12-3027-48/+48
|
* 4894Kartik Agaram2018-12-303-0/+170
| | | | | | | | | | | | Done with kinda-safe pointers. In a real compiler the fast path of 'lookup' would ideally get inlined. Excluding procedure-call overhead, the current implementation consumes 2 registers besides the input, and requires 9 instructions (2 push, 2 load, compare, jump, increment, 2 pop). That's large enough that inlining may become a trade-off. Even if we somehow magically had the registers already loaded and available, we'd still need 4 instructions (1 pointer dereference, compare, jump and increment). The price of safety.
* 4893Kartik Agaram2018-12-3014-27/+27
|
* 4892Kartik Agaram2018-12-302-12/+18
|
* 4891Kartik Agaram2018-12-30185-345/+568
| | | | | | | | | | | Couple more tweaks to html rendering: a) SubX definitions no longer link redundantly to themselves. This long-standing issue turns out to be tractable to solve for SubX files since the syntax is so simple. b) Fix links to SubX definitions in other directories. I forgot that I have to always generate tags from the directory of the file being linkified. c) Fix link colors. Before we lost all syntax highlighting for functions and Globals. Now they maintain their colors, just add an underline.
* 4890 - new html renderingsKartik Agaram2018-12-29188-5651/+5330
| | | | | | | a) Switch to a light background. b) Linkify calls in .subx files. c) Keep all colorization in the Vim colorscheme, get rid of hacky special-cases in update_html.
* 4889 - playing with kinda-safe pointersKartik Agaram2018-12-292-0/+211
|
* 4888Kartik Agaram2018-12-2934-173/+173
| | | | We only can't use rm32=5 when mod=0. Totally fine when it's mod=1.
* 4887Kartik Agaram2018-12-291-3/+3
|
* 4886Kartik Agaram2018-12-2813-27/+28
|
* 4885Kartik Agaram2018-12-281-1/+1
| | | | Make dots a little more salient on a light-background Vim.
* 4884Kartik Agaram2018-12-282-3/+3
|
* 4883 - rudimentary memory allocatorKartik Agaram2018-12-289-8/+183
|
* 4882Kartik Agaram2018-12-281-15/+26
|
* 4881Kartik Agaram2018-12-2819-20/+20
|
* 4880Kartik Agaram2018-12-2824-43/+41
|
* 4879Kartik Agaram2018-12-2815-56/+56
|
* 4878Kartik Agaram2018-12-272-2/+2
|
* 4877Kartik Agaram2018-12-272-3/+3
|
* 4876Kartik Agaram2018-12-271-1/+1
|
* 4875Kartik Agaram2018-12-251-1/+3
| | | | Another tweak for a light background.
* 4874Kartik Agaram2018-12-252-0/+26
|
* 4873Kartik Agaram2018-12-202-6/+13
|
* 4872 - ctags definitions for SubXKartik Agaram2018-12-171-0/+3
| | | | Symlink or append exuberant_ctags_rc to your ~/.ctagsrc.
* 4871Kartik Agaram2018-12-171-6/+20
| | | | Experimenting with a light background colorscheme.
* 4870Kartik Agaram2018-12-171-1/+1
| | | | | | Don't treat this as a section comment: e8/call foo # -1 is negative
* 4869Kartik Agaram2018-12-1642-1210/+1195
|
* 4868Kartik Agaram2018-12-161-1/+1
|
* 4867Kartik Agaram2018-12-151-8/+8
|
* 4866Kartik Agaram2018-12-101-6/+6
|
* 4865Kartik Agaram2018-12-106-28/+28
| | | | More mnemonic register usage in write-stream.
* 4864Kartik Agaram2018-12-106-213/+319
| | | | Our first buffer overflow!
* 4863Kartik Agaram2018-12-104-4/+4
|
* 4862Kartik Agaram2018-12-092-147/+145
|
* 4861Kartik Agaram2018-12-092-42/+42
|
* 4860 - stage 1 of SubX compiler in SubX is done!Kartik Agaram2018-12-093-1520/+1634
| | | | | | | | | I'm imagining 3 core stages total: 1. convert text hex bytes -> binary (✓) 2. pack and reorder operands 3. compute label addresses (Not including extras like error-checking.)