about summary refs log tree commit diff stats
path: root/subx
Commit message (Collapse)AuthorAgeFilesLines
* 4918Kartik Agaram2019-01-104-4/+4
|
* 4917Kartik Agaram2019-01-101-140/+0
|
* 4916Kartik Agaram2019-01-1012-24/+611
| | | | | In the process of building slice primitives I found an out-of-bounds access in write-byte.
* 4915Kartik Agaram2019-01-084-11/+213
| | | | | | In the process of building next-token I finally added some support for a debugging situation I've found myself in a couple of times: wondering "what changed this memory location"?
* 4913Kartik Agaram2019-01-077-2/+472
|
* 4912Kartik Agaram2019-01-061-3/+117
|
* 4911Kartik Agaram2019-01-0611-21/+223
|
* 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-033-0/+0
|
* 4900Kartik Agaram2018-12-302-39/+34
| | | | | | | | | | | 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.
* 4898Kartik Agaram2018-12-302-2/+2
|
* 4896Kartik Agaram2018-12-301-0/+0
| | | | Fix CI.
* 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-301-0/+3
|
* 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-281-1/+1
|
* 4879Kartik Agaram2018-12-289-24/+24
|
* 4878Kartik Agaram2018-12-271-1/+1
|
* 4877Kartik Agaram2018-12-271-1/+1
|
* 4876Kartik Agaram2018-12-271-1/+1
|
* 4874Kartik Agaram2018-12-252-0/+26
|
* 4873Kartik Agaram2018-12-201-5/+11
|
* 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
* 4868Kartik Agaram2018-12-161-1/+1
|
* 4867Kartik Agaram2018-12-151-8/+8
|
* 4866Kartik Agaram2018-12-101-6/+6
|
* 4865Kartik Agaram2018-12-105-14/+14
| | | | More mnemonic register usage in write-stream.
* 4864Kartik Agaram2018-12-105-0/+53
| | | | Our first buffer overflow!
* 4863Kartik Agaram2018-12-102-2/+2
|
* 4862Kartik Agaram2018-12-091-2/+1
|
* 4861Kartik Agaram2018-12-092-42/+42
|
* 4860 - stage 1 of SubX compiler in SubX is done!Kartik Agaram2018-12-092-9/+66
| | | | | | | | | 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.)