Commit Graph

808 Commits

Author SHA1 Message Date
Kartik Agaram f4408d76c5 5944 2020-01-28 21:41:24 -08:00
Kartik Agaram f6078f8d04 5941 2020-01-27 16:17:29 -08:00
Kartik Agaram 1862ab4252 5937 2020-01-27 14:15:35 -08:00
Kartik Agaram cfdd5b8bf3 5933
Expand some buffer sizes to continue building mu.subx natively.
2020-01-27 02:35:35 -08:00
Kartik Agaram 2363ceebaf 5932 2020-01-27 02:23:31 -08:00
Kartik Agaram 8ae2c80e19 5931 2020-01-27 02:12:37 -08:00
Kartik Agaram 1d8849e52d 5930 2020-01-27 02:08:47 -08:00
Kartik Agaram 2104d1a75b 5925 2020-01-27 00:39:46 -08:00
Kartik Agaram 810b0f67fa 5922 2020-01-26 23:46:37 -08:00
Kartik Agaram 5b4f4d63bd 5917 2020-01-22 23:47:33 -08:00
Kartik Agaram f833e0a0e7 5912 2020-01-20 03:09:06 -08:00
Kartik Agaram 41e4cfc33f 5904 2020-01-19 23:38:06 -08:00
Kartik Agaram 33258e0ad2 5903 2020-01-19 21:58:32 -08:00
Kartik Agaram 1008059f1f 5901 2020-01-19 17:55:59 -08:00
Kartik Agaram 6070c23e5e 5897 - rename comparison instructions
Signed and unsigned don't quite capture the essence of what the different
combinations of x86 flags are doing for SubX. The crucial distinction is
that one set of comparison operators is for integers and the second is
for addresses.
2020-01-16 18:31:12 -08:00
Kartik Agaram 5a6601aba9 5896 2020-01-16 18:10:42 -08:00
Kartik Agaram 01e88c8833 5895 2020-01-16 18:10:42 -08:00
Kartik Agaram 675fa93ded 5894 2020-01-16 18:10:42 -08:00
Kartik Agaram c504ca5661 5893 2020-01-14 01:52:54 -08:00
Kartik Agaram 8fa32599bb 5889 2020-01-14 01:52:54 -08:00
Kartik Agaram fa786ea791 5884 2020-01-12 14:52:07 -08:00
Kartik Agaram 194d100792 5881 2020-01-10 10:35:17 -08:00
Kartik Agaram 2f899b3b2c 5878
The current prototype doesn't really use floating point; drop the
guardrails there.
2020-01-03 22:12:28 -08:00
Kartik Agaram 68071dca1e 5877 2020-01-03 02:17:53 -08:00
Kartik Agaram 7e7a8a6eae 5876 - address -> addr 2020-01-03 01:36:34 -08:00
Kartik Agaram c9bda4d13e 5875 2020-01-02 15:23:01 -08:00
Kartik Agaram 113bae7311 5856 2020-01-01 17:23:29 -08:00
Kartik Agaram 1b050736ee 5855 2020-01-01 17:11:05 -08:00
Kartik Agaram 03a1de4536 5835 2019-12-28 00:02:29 -08:00
Kartik Agaram cea97b7b22 5810 2019-12-09 16:54:34 -08:00
Kartik Agaram 91624dbaca 5807 2019-12-09 01:32:48 -08:00
Kartik Agaram 8aeb85f04e 5806 2019-12-09 01:26:58 -08:00
Kartik Agaram f25f2e98f9 5786 2019-11-30 14:18:36 -08:00
Kartik Agaram 3ccc100b32 5783 2019-11-30 11:15:15 -08:00
Kartik Agaram 367394c7de 5771 2019-11-28 01:02:40 -08:00
Kartik Agaram 3a7da4e735 5769 - support uppercase hex in SubX 2019-11-28 00:37:26 -08:00
Kartik Agaram 374397f0cb 5766 2019-11-26 22:21:06 -08:00
Kartik Agaram b697b34318 5763 2019-11-26 18:07:55 -08:00
Kartik Agaram 4d20c9ee94 5761 2019-11-26 17:41:25 -08:00
Kartik Agaram 49ffb03084 5756 2019-11-18 17:36:59 -08:00
Kartik Agaram dd6c5fff9e 5755
Support function calls with literal arguments.
2019-11-18 17:29:50 -08:00
Kartik Agaram e9db8e1f25 5754
Support binary instructions with an immediate operand.
2019-11-18 16:30:30 -08:00
Kartik Agaram 6488bfcf85 5753
Binaries are now identical again.
There's a little hack here that we should clean up at some point. But it
requires more thought.

Ordering compiler phases is hard. So far we're only at the start of the
slippery slope into that abyss.
2019-11-18 12:50:01 -08:00
Kartik Agaram 442fdabe30 5752
Support binary operations with reg/mem and reg operands.

Everything is passing. However, the self-hosting translator now generates
some discrepancies compared to the C++ translator :(
2019-11-18 01:15:29 -08:00
Kartik Agaram 0ea0ebcf81 5751 - start of table of Mu primitives
So far this is just the same as our most recent tests. But now we have a
'DSL' for adding more primitives.
2019-11-18 00:24:24 -08:00
Kartik Agaram 3b40e3c331 5750
We can now compile primitive statements while selecting the right template
to code-gen each one from. Even when multiple templates have the same name.
2019-11-17 21:01:36 -08:00
Kartik Agaram edda65475a 5747 2019-11-15 18:44:04 -08:00
Kartik Agaram 95ccc2e055 5745
I've been under-estimating the complexity of translating primitive statements.
We need to separately track information for each primitive about operands
for both the source and emitted SubX notation.
2019-11-14 20:10:49 -08:00
Kartik Agaram 75d5b73cfc 5741
Support variables at positive stack offsets (formal parameters for functions),
and also an indicator for 'any register' for primitive operations.
2019-11-14 17:19:52 -08:00
Kartik Agaram 525767cb0e 5738 2019-11-10 21:04:21 -08:00
Kartik Agaram 34e01d7f26 5732 2019-11-09 09:34:57 -08:00
Kartik Agaram fb26bd2141 5731 2019-11-09 09:07:41 -08:00
Kartik Agaram 3a74e0e646 5730 2019-11-09 09:02:24 -08:00
Kartik Agaram 6dd309a2e1 5726 2019-11-03 00:44:25 -07:00
Kartik Agaram de54d4735b 5725 2019-10-30 09:51:07 -07:00
Kartik Agaram 01c811d9ae 5724 2019-10-29 23:04:12 -07:00
Kartik Agaram efae9496be 5723 2019-10-29 22:39:47 -07:00
Kartik Agaram ffd4a419b4 5717 2019-10-27 00:52:44 -07:00
Kartik Agaram 999c529cb9 5716 2019-10-26 23:51:14 -07:00
Kartik Agaram 0a2247726a 5708 2019-10-19 18:53:05 -07:00
Kartik Agaram c8998b51e1 5707 2019-10-19 18:49:40 -07:00
Kartik Agaram c83dca9cb4 5706 - example at different levels of syntax sugar
Thanks Mateusz Czapliński for the feedback:
  https://lobste.rs/s/xtxlec/mu_minimal_hobbyist_computing_stack#c_1mzq94
2019-10-19 18:43:16 -07:00
Kartik Agaram bb1a1ac2b6 5704
Minor tweaks based on feedback from Max Bernstein.
2019-10-19 14:44:54 -07:00
Kartik Agaram b1635a5c8e 5701 2019-10-17 22:03:48 -07:00
Kartik Agaram 3c1bc4fcb4 5696 2019-10-03 00:15:08 -07:00
Kartik Agaram a844bd058a 5684
Support function-call syntax when linkifying functions in html files.
2019-09-21 00:22:10 -07:00
Kartik Agaram 4a4a392dc7 5683 2019-09-20 11:25:59 -07:00
Kartik Agaram f39eaf81fa 5661 2019-09-15 00:29:52 -07:00
Kartik Agaram a0d3cac4e6 5659 2019-09-15 00:01:26 -07:00
Kartik Agaram 57fa808b18 5637 2019-09-07 13:37:51 -07:00
Kartik Agaram e850764d8c 5632 2019-09-06 19:57:05 -07:00
Kartik Agaram 8475b51e40 5629 2019-09-06 15:48:54 -07:00
Kartik Agaram dde37113cb 5625 2019-09-05 00:33:34 -07:00
Kartik Agaram 77c96940d5 5623 2019-09-04 21:29:42 -07:00
Kartik Agaram 007b5c7faa 5614 2019-09-03 23:56:40 -07:00
Kartik Agaram ae07bf353c 5612 2019-09-02 16:34:31 -07:00
Kartik Agaram e8a1153af1 5611 2019-09-02 15:46:15 -07:00
Kartik Agaram 68dff52698 5610 2019-09-02 15:42:21 -07:00
Kartik Agaram 18bd3ef902 5607 - start of notation for function calls 2019-09-02 15:36:08 -07:00
Kartik Agaram 604c8315bd 5607 2019-09-01 23:57:29 -07:00
Kartik Agaram 7a81a4505c 5606 2019-09-01 23:38:06 -07:00
Kartik Agaram b44c754bc0 5605 - sigils: support *disp32 2019-09-01 23:22:39 -07:00
Kartik Agaram c94ecaf687 5603 2019-09-01 00:39:17 -07:00
Kartik Agaram cafca95097 5602 2019-09-01 00:12:43 -07:00
Kartik Agaram 075354cd17 5601 2019-08-31 23:58:19 -07:00
Kartik Agaram 282681c729 5600 2019-08-31 23:42:45 -07:00
Kartik Agaram 518429b1cb 5598 2019-08-31 22:34:56 -07:00
Kartik Agaram bf02a19d02 5596 2019-08-31 22:18:24 -07:00
Kartik Agaram 3046e34da8 5595 - support ebp and esp in sigils
The x86 instruction set carves out exceptions for these registers.
2019-08-31 22:14:11 -07:00
Kartik Agaram e97b446ac3 5594 - rename 'desugar' to 'sigils'
There's going to be multiple forms of syntax sugar going forward.
2019-08-31 20:43:41 -07:00
Kartik Agaram 333525360b 5592 - switch register names to lowercase 2019-08-26 11:59:21 -07:00
Kartik Agaram 22fb844ba4 5591 2019-08-26 11:54:29 -07:00
Kartik Agaram e0d034b565 5590 2019-08-25 23:33:49 -07:00
Kartik Agaram fc55af70a5 5589 2019-08-25 23:25:08 -07:00
Kartik Agaram 7c878eb0ea 5583
Clean up some missing error messages.
2019-08-25 16:29:10 -07:00
Kartik Agaram 6033844884 5582 2019-08-25 15:54:16 -07:00
Kartik Agaram 0bb09d2e14 5522 - example app: random number stream
Turns out Mu's kernel isn't populating /dev/random correctly.
2019-08-20 00:20:38 -07:00
Kartik Agaram 1ed1d1c842 5499 2019-07-31 15:28:23 -07:00
Kartik Agaram c8a3ccbeb8 5490 2019-07-27 18:26:18 -07:00
Kartik Agaram 6e1eeeebfb 5485 - promote SubX to top-level 2019-07-27 17:47:59 -07:00
Kartik Agaram 695f9bf8d0 5468 2019-07-25 00:10:56 -07:00
Kartik Agaram ce2c1efc41 . 2019-07-14 09:42:36 -07:00
Kartik Agaram d1fa22f7b4 5221
Explore using a second register for pointer dereferencing.
2019-05-22 22:33:42 -07:00
Kartik Agaram 40077d0d2b 5220 2019-05-22 21:59:39 -07:00
Kartik Agaram 1b6aa10a6b 5216 2019-05-22 08:49:31 -07:00
Kartik Agaram 52daf0722f 5211
Update syntax-highlighted renderings after a _long_ time.
2019-05-20 01:44:06 -07:00
Kartik Agaram 8a8c421192 5125 2019-04-25 03:23:25 -07:00
Kartik Agaram ceb04db3cc 5124 2019-04-23 21:21:29 -07:00
Kartik Agaram 7df08a942a 5123 2019-04-23 21:17:10 -07:00
Kartik Agaram 99d22b871d 5122 2019-04-23 21:13:31 -07:00
Kartik Agaram caa6fd200c 5121 2019-04-23 21:08:17 -07:00
Kartik Agaram 0af2ea07b3 5119 2019-04-23 20:51:58 -07:00
Kartik Agaram c5672a65bc 5081 2019-04-11 11:40:59 -07:00
Kartik Agaram 09492d3867 5077 2019-04-10 21:18:55 -07:00
Kartik Agaram 1080c97984 5035 2019-03-29 13:18:46 -07:00
Kartik Agaram 9c1056f531 5033 2019-03-29 00:47:30 -07:00
Kartik Agaram cb7b403210 4989 2019-02-25 01:50:53 -08:00
Kartik Agaram e99038ea51 4982 2019-02-18 22:43:01 -08:00
Kartik Agaram 554777cb2b 4968 2019-02-14 23:57:14 -08:00
Kartik Agaram 9309600c5a 4967 2019-02-14 23:00:47 -08:00
Kartik Agaram a630d7fb96 4959
It's always seemed ugly to explain the rules for segment names. Let's just
always require a fixed name for the code and data segments.
2019-02-13 00:01:14 -08:00
Kartik Agaram 7bc0f8c1d0 4957 2019-02-11 23:01:20 -08:00
Kartik Agaram 6e181e7fd9 4953 2019-02-05 23:30:12 -08:00
Kartik Agaram cb82bd2364 4948
This seems like the final helper we need for Phase 2. Now to build the
business logic itself.
2019-02-02 15:21:48 -08:00
Kartik Agaram 95540b2452 4942 2019-01-21 00:59:05 -08:00
Kartik Agaram c65dee2d99 4938 2019-01-20 23:20:34 -08:00
Kartik Agaram 332cbba31f 4937 2019-01-20 22:50:44 -08:00
Kartik Agaram 1f0f381303 4936 2019-01-18 22:30:38 -08:00
Kartik Agaram 76733e1995 4932 2019-01-16 00:12:55 -08:00
Kartik Agaram 8472406209 4928 2019-01-14 23:16:22 -08:00
Kartik Agaram 3f97166cf7 4927 2019-01-14 17:29:10 -08:00
Kartik Agaram 509f0a12ca 4926 2019-01-14 17:06:10 -08:00
Kartik Agaram feec2292b5 4925 2019-01-14 16:54:41 -08:00
Kartik Agaram 220ac38964 4923
We want slice-equal? for length-prefixed strings, not null-terminated "kernel"
strings.
2019-01-12 22:24:06 -08:00
Kartik Agaram e92fa89edf 4922 2019-01-11 18:12:05 -08:00
Kartik Agaram db8a9ab553 4921 2019-01-11 18:08:21 -08:00
Kartik Agaram dadae33848 4920 2019-01-11 17:50:29 -08:00
Kartik Agaram 44e030822e 4919 2019-01-10 17:19:00 -08:00
Kartik Agaram 96a6bac52d 4914 2019-01-07 13:36:15 -08:00
Kartik Agaram 634b162a98 4901 2019-01-03 17:02:17 -08:00
Kartik Agaram 1ffb27a045 4900
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.
2018-12-30 21:01:35 -08:00
Kartik Agaram 901ae47430 4899
Bug in my linkify tool introduced in commit 4891.
2018-12-30 20:24:37 -08:00
Kartik Agaram 0474ec865a 4898 2018-12-30 12:58:21 -08:00
Kartik Agaram 5a68894ca1 4897 2018-12-30 12:54:35 -08:00
Kartik Agaram ebd3552150 4895 2018-12-30 01:42:06 -08:00
Kartik Agaram e0ffdcd1a6 4892 2018-12-30 00:16:32 -08:00
Kartik Agaram 08a0eed699 4891
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.
2018-12-30 00:02:42 -08:00
Kartik Agaram ac07e589b3 4890 - new html renderings
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.
2018-12-29 15:27:18 -08:00
Kartik Agaram e0610e396f 4880 2018-12-28 02:18:16 -08:00
Kartik Agaram 044b413021 4879 2018-12-28 02:07:11 -08:00
Kartik Agaram efc3c64b0d 4878 2018-12-27 23:44:03 -08:00
Kartik Agaram f842ab98de 4877 2018-12-27 23:38:38 -08:00
Kartik Agaram cdfff1a18d 4869 2018-12-16 20:52:47 -08:00
Kartik Agaram 3d4fba4d12 4865
More mnemonic register usage in write-stream.
2018-12-10 09:55:46 -08:00
Kartik Agaram 3a4d870730 4864
Our first buffer overflow!
2018-12-10 00:17:47 -08:00
Kartik Agaram dd08c9e69b 4863 2018-12-10 00:14:49 -08:00
Kartik Agaram f9ec61327a 4862 2018-12-09 23:37:34 -08:00
Kartik Agaram 42a933078c 4860 - stage 1 of SubX compiler in SubX is done!
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.)
2018-12-09 21:18:05 -08:00
Kartik Agaram 3fede2964e 4858 - debugging tips 2018-12-08 01:00:30 -08:00
Kartik Agaram c3adc0d422 4855 2018-12-06 12:54:03 -08:00
Kartik Agaram e9909be374 4849 2018-12-06 11:01:23 -08:00
Kartik Agaram a966881b6e 4848 2018-12-06 10:50:26 -08:00
Kartik Agaram 81605224f0 4847 2018-12-06 09:41:40 -08:00
Kartik Agaram 33e7c3a751 4846
Clean up a few things:

a) Call scan-next-byte in hex.subx with the right number of args. Turns
out tests continue to work fine if they never use the other args.

b) Tear down a test for 'stop' in the right order. Not important since we
have no EBP to restore. But can still be misleading.

c) Have 'check-ints-equal' return nothing. Handy for it to not mess up
EAX. I never use the result anyway, and the name also is imperative suggesting
callers won't expect a return value.
2018-12-06 09:34:55 -08:00
Kartik Agaram 33cf1f90be 4845 2018-12-06 00:42:12 -08:00
Kartik Agaram 257ca35ab4 4845
Making progress on hex1 (http://web.archive.org/web/20061108010907/http://www.rano.org/bcompiler.html)
2018-12-06 00:16:01 -08:00
Kartik Agaram 9fe5bca490 4844 2018-12-06 00:15:45 -08:00
Kartik Agaram 27ef047ae5 4842 2018-12-05 22:34:59 -08:00
Kartik Agaram 79328f9ad6 4841
New helper: print an error message, then a numeric byte, then abort.
2018-12-04 12:26:27 -08:00
Kartik Agaram a94b60b5cc 4840
New helper: printing a string to a buffered file.
2018-12-04 12:16:17 -08:00
Kartik Agaram 707935d0a8 4839 2018-12-04 12:12:18 -08:00
Kartik Agaram af5797eeff 4838
Better to use EDI as a mnemonic for 'destination'.
2018-12-04 10:40:01 -08:00
Kartik Agaram 9e03e2bd37 4837
Let's standardize to use opcode 39 rather than 3b by default.
2018-12-04 10:19:18 -08:00
Kartik Agaram ca0a598c87 4836 2018-12-04 09:59:42 -08:00
Kartik Agaram 768093cd94 4835 2018-12-04 09:57:40 -08:00
Kartik Agaram 381d80f8a4 4834
Fix CI since 4827.
2018-12-04 09:56:23 -08:00
Kartik Agaram cf02c20bb0 4832
Let's start adding ':end' labels in all functions, just because it helps
us visualize where function calls end in traces, thanks to the '--map'
commandline argument.
2018-12-04 00:29:06 -08:00
Kartik Agaram 7cb326df5b 4831 2018-12-04 00:17:40 -08:00
Kartik Agaram 5f3b3e7aea 4830
New helper: printing a byte in textual (hex) form.

This required adding instructions for bitwise shift operations.
2018-12-03 23:26:56 -08:00
Kartik Agaram ee73f5eb31 4829
Showing the error bit pattern explicitly makes it more clear that it's
not possible to generate as a non-error value.
2018-12-03 17:32:42 -08:00
Kartik Agaram 83822d6324 4828 - writing to buffered-file
This is likely a sub-optimal interface, but I'm trying not to agonize.
The whole point of Mu is to permit radical changes at any point in time.
2018-12-03 17:08:53 -08:00
Kartik Agaram 5e27c7f13e 4827
I was 'returning' a phantom value from 'write' when the underlying '_write'
returns nothing.

In general, returning counts of bytes written is not so useful for error
checking when my primitives abstract away from that. We'll come back to
error signalling later.
2018-12-03 16:44:16 -08:00
Kartik Agaram 5082923e81 4826 2018-12-03 16:34:16 -08:00
Kartik Agaram 91dab3e1a4 4824 2018-12-03 12:03:23 -08:00
Kartik Agaram 26efb5f5c2 4823 2018-12-03 11:42:04 -08:00
Kartik Agaram 1eb9cc5679 4822
Fix CI.

It's kind of a hassle (and wasteful) that I need to redefine 'main' in
every single layer.
2018-12-03 11:41:33 -08:00
Kartik Agaram 0eb0f69616 4821 2018-12-02 22:41:28 -08:00
Kartik Agaram ef31035a9f 4820 2018-12-02 20:39:21 -08:00
Kartik Agaram 0043952064 4819 2018-12-02 16:58:30 -08:00
Kartik Agaram c98d4b1c6a 4818 2018-12-02 14:41:21 -08:00
Kartik Agaram f75f333f52 4817 2018-12-02 13:12:23 -08:00
Kartik Agaram 39d718afcf 4816 2018-12-02 13:09:23 -08:00
Kartik Agaram f44c595267 4815 2018-12-02 11:08:30 -08:00
Kartik Agaram e4ac3c9e6e 4814 2018-12-01 14:13:33 -08:00
Kartik Agaram 54e5128a14 4813 2018-12-01 12:44:10 -08:00
Kartik Agaram c6f522007d 4811 2018-11-30 20:01:41 -08:00
Kartik Agaram 14a380525e 4809 - subx: html with 5 colors for comments 2018-11-30 16:54:01 -08:00
Kartik Agaram a20b51bdb7 4797 2018-11-30 09:45:07 -08:00
Kartik Agaram c56d803cd8 4796 2018-11-30 09:43:49 -08:00
Kartik Agaram d1e5e391c7 4788 2018-11-27 12:06:08 -08:00
Kartik Agaram 2131b055f5 4787 2018-11-27 12:04:53 -08:00
Kartik Agaram d1c9392a54 4782 2018-11-26 01:19:47 -08:00
Kartik Agaram f362a0cb09 4778 - entirely rewritten Readme 2018-11-25 23:42:20 -08:00
Kartik Agaram 4c37b3e91b 4734 2018-10-28 13:41:53 -07:00
Kartik Agaram 1f08b541af 4724 2018-10-24 23:28:03 -07:00
Kartik Agaram 6f37250dd9 4722 2018-10-24 23:05:58 -07:00
Kartik Agaram 104e521c04 4709 2018-10-17 07:08:47 -07:00
Kartik Agaram 34c84469c2 4654 2018-10-02 14:33:08 -07:00
Kartik Agaram 5a2cb154eb 4649 2018-10-02 01:21:32 -07:00
Kartik Agaram 2e693f723d 4623 2018-09-30 22:29:43 -07:00
Kartik Agaram 7e274cf2be 4520 2018-09-26 10:48:44 -07:00
Kartik Agaram 37d53a7095 4512 2018-09-23 22:38:16 -07:00
Kartik Agaram 1a4de9dd58 4588 2018-09-22 00:32:03 -07:00
Kartik Agaram c762564bd7 4539 2018-09-07 22:42:23 -07:00
Kartik Agaram 608a7fa8d0 4536 2018-09-07 15:08:54 -07:00
Kartik Agaram d2c239e1fa 4525 2018-08-20 23:23:45 -07:00
Kartik Agaram 7328af20a1 4521 2018-08-13 21:25:22 -07:00
Kartik Agaram bb2b6ba7fd 4478 2018-08-04 17:00:27 -07:00
Kartik Agaram 5fe060d582 4447 2018-07-27 17:08:29 -07:00
Kartik Agaram ecfa21dd5a 4245 - fix example1.mu to actually run
Thanks mahmudov on freenode IRC for the feedback! This was an
embarrassing oversight right at the top of my Readme.
2018-05-13 20:41:21 -07:00
Kartik Agaram 059def11cb 4244 2018-05-12 23:08:39 -07:00
Kartik Agaram 1fb0cf9ef9 4243 2018-05-12 20:14:49 -07:00
Kartik Agaram cdf2822743 4242 - get rid of refcounts entirely
We're going to lean back into the experiment of commit 4179 back in Jan.
If we delete memory it's up to us to ensure no pointers into it survive.

Since deep-copy depends on our refcounting infrastructure, it's gone as
well. So we're going to have to start watching out for pointers shared
over channels.
2018-05-12 10:22:26 -07:00
Kartik Agaram 4bb57a55a0 4239 2018-05-08 10:25:00 -07:00
Kartik K. Agaram 06e0edbaf8 4230 2018-03-16 03:15:08 -07:00
Kartik K. Agaram 7452d0525e 4228 2018-03-15 23:29:08 -07:00
Kartik K. Agaram 94ffc3776c 4209 2018-02-18 15:55:42 -08:00
Kartik K. Agaram b301e0c0e6 4200
Forgot to set up exuberant_ctags_rc as .ctags on new laptop.
2018-01-27 00:28:51 -08:00
Kartik K. Agaram 805d58c6ae 4199 2018-01-25 22:39:31 -08:00
Kartik K. Agaram c8eb6c1a64 4178 2017-12-31 16:39:13 -08:00
Kartik K. Agaram f43f556e28 4176 2017-12-31 02:18:36 -08:00
Kartik K. Agaram f93226d5f1 4168 2017-12-30 02:01:09 -08:00
Kartik K. Agaram f94f03cfb0 4167 - show square colors in chessboard app 2017-12-27 23:30:43 -08:00
Kartik K. Agaram 3cb4e19e35 4166 2017-12-27 23:22:31 -08:00
Kartik K. Agaram f0c55e6b97 4165 2017-12-27 20:39:51 -08:00
Kartik K. Agaram e82dc62668 4164 2017-12-27 20:19:46 -08:00
Kartik K. Agaram c81fde0c44 4163 2017-12-24 12:44:01 -08:00
Kartik K. Agaram fa708f553a 4162 2017-12-22 00:45:48 -08:00
Kartik K. Agaram fe8bf967a9 4161 2017-12-15 02:09:36 -08:00
Kartik K. Agaram f7c8c3effe 4157 2017-12-09 03:25:15 -08:00
Kartik K. Agaram 30ea2e4522 4156 2017-12-07 17:06:45 -08:00
Kartik K. Agaram c0f84b1ffa 4155 2017-12-07 16:22:23 -08:00
Kartik K. Agaram 9a20f9e322 4135 2017-12-03 23:51:42 -08:00
Kartik K. Agaram 4a48bedcd1 4134 - 'input' = 'ingredient' 2017-12-03 23:25:40 -08:00
Kartik K. Agaram ef7d834fdd 4133 2017-11-25 10:17:23 -08:00
Kartik K. Agaram 6e455985c7 4123 2017-11-16 23:39:46 -08:00
Kartik K. Agaram 1437d8417a 4122 2017-11-15 16:40:48 -08:00
Kartik K. Agaram 51b3503143 4118 2017-11-06 02:35:54 -08:00
Kartik K. Agaram d55e77387f 4117 - done with delimited continuations
At least this particular implementation of them. Let's play with them
now for a while, see if they're fully equivalent to shift/reduce.
2017-11-06 01:28:53 -08:00
Kartik K. Agaram 485775ec61 4113 2017-11-05 11:17:23 -08:00
Kartik K. Agaram 58d918defc 4112 2017-11-05 10:22:25 -08:00
Kartik K. Agaram 363652449c 4110 - add continuations to docs 2017-11-05 02:24:20 -08:00
Kartik K. Agaram ffc9e66b35 4109 2017-11-05 02:00:26 -08:00
Kartik K. Agaram 850822ffbf 4102 2017-11-01 03:41:16 -07:00
Kartik K. Agaram 292ccba1bb 4085 - done with first cut of the SubX VM
subx: 'call' and 'return' instructions
2017-10-18 03:11:56 -07:00
Kartik K. Agaram 8a0268317f 4084
subx: extract helpers for 'push' and 'pop'. We will be using them in
'call' and 'ret' as well.
2017-10-18 02:27:56 -07:00
Kartik K. Agaram 099ed980c4 4083
subx: 'pop'
2017-10-18 02:13:34 -07:00
Kartik K. Agaram 9ecbcc552e 4082
subx: correct a 'copy' ('mov') instruction as well to get its operand
right from the opcode.
2017-10-18 02:00:44 -07:00
Kartik K. Agaram cb4be511b7 4081 2017-10-18 01:53:25 -07:00
Kartik K. Agaram f44c49c776 4080
subx: correct 'push' register. It gets its operand right from the
opcode, not a new modrm byte.

Have I misinterpreted any other instructions in this manner (`+rd` in
the Intel manual)?
2017-10-18 01:44:52 -07:00
Kartik K. Agaram 9e45873ff4 4079
subx: 'pop'
2017-10-18 00:57:46 -07:00
Kartik K. Agaram f959569491 4078 2017-10-17 23:55:25 -07:00
Kartik K. Agaram 15cd825dee 4077
Stop hyperlinking every `i` in subx html files to the integer register
union.
2017-10-17 23:50:45 -07:00
Kartik K. Agaram 3dedbe9ce3 4072 2017-10-16 02:58:42 -07:00
Kartik K. Agaram 95e5511ab8 4069
subx: unconditional 'jump'
2017-10-15 01:59:11 -07:00
Kartik K. Agaram 1ee02a2273 4068 2017-10-15 01:18:55 -07:00
Kartik K. Agaram 125bea475f 4067
subx: 'mov'
2017-10-15 00:06:37 -07:00
Kartik K. Agaram 311297cb00 4066
I spent a while spelunking into the code generated by C compilers before
realizing that ignoring the order of arguments for 'cmp' instructions
clarifies everything.
2017-10-14 23:35:00 -07:00
Kartik K. Agaram c67ca4b926 4065
subx: 'compare'

Hopefully I've implemented the 'sense' of comparisons right..
2017-10-14 23:00:05 -07:00
Kartik K. Agaram 0cb3c774b2 4064 2017-10-14 19:18:51 -07:00
Kartik K. Agaram f603d9f2d3 4063 2017-10-14 16:12:18 -07:00
Kartik K. Agaram 03dcb7c940 4062 2017-10-13 21:53:22 -07:00
Kartik K. Agaram 84ca523f03 4061 2017-10-13 21:50:41 -07:00
Kartik K. Agaram ba2ec7250d 4059 2017-10-13 01:27:51 -07:00
Kartik K. Agaram 7a219c68ba 4054 2017-10-12 23:55:19 -07:00
Kartik K. Agaram f829120a62 4053 2017-10-12 23:50:00 -07:00
Kartik K. Agaram 25ad969f75 4052 2017-10-12 23:43:09 -07:00
Kartik K. Agaram 3b158194a8 4028 2017-10-12 09:48:47 -07:00
Kartik K. Agaram d331cded4d 4027
Hacky one-time html rendering for a single layer in subx.
2017-10-12 09:40:41 -07:00
Kartik K. Agaram 36f616b5c0 4010 2017-10-04 22:38:22 -07:00
Kartik K. Agaram 984a6321ad 4009
Undo commit 4002 for factorial.mu, because index.html describes it as an
example showing the labels '{' and '}'.
2017-10-04 21:29:45 -07:00
Kartik K. Agaram c0d61295ed 4008
Allow list `push` operation to save result in a new list rather than
mutate the existing list.
2017-09-25 21:20:49 -07:00
Kartik K. Agaram 4092372043 4007 2017-09-25 03:35:02 -07:00
Kartik K. Agaram 4f1d194487 4006 2017-09-24 23:31:57 -07:00
Kartik K. Agaram 947c639ec6 4005
https://www.reddit.com/r/ProgrammingLanguages/comments/727va7/a_comparison_of_lisps/dnh2q6u
2017-09-24 23:25:42 -07:00
Kartik K. Agaram 925b20c497 4004 2017-09-23 20:39:19 -07:00
Kartik K. Agaram 615f4a970a 4003 2017-09-23 19:30:00 -07:00
Kartik K. Agaram 50685c29bd 4001 2017-09-18 23:23:29 -07:00
Kartik K. Agaram 2d8870d903 3998 2017-09-13 22:51:25 -07:00
Kartik K. Agaram 81a324bec3 3995 2017-09-13 21:11:24 -07:00
Kartik K. Agaram 87c5b32925 3990 2017-09-03 17:35:22 -07:00
Kartik K. Agaram b74744cd58 3985 2017-08-30 03:07:18 -07:00
Kartik K. Agaram 0899b237b0 3984 - bugfix: display errors when scrolling recipe side
This regression was (also) introduced by commit 3902 in June.
2017-08-25 02:02:56 -07:00
Kartik K. Agaram 8a92572df5 3983 2017-08-22 09:50:06 -07:00
Kartik K. Agaram 7a4bf4cfab 3976 2017-08-20 22:03:31 -07:00
Kartik K. Agaram c5e4a41aa5 3974 2017-08-20 04:39:07 -07:00
Kartik K. Agaram 1157f78fc9 3973 2017-08-20 03:15:26 -07:00
Kartik K. Agaram 51728d9334 3971 2017-08-19 05:53:31 -07:00
Kartik K. Agaram 9e32e4736d 3963
Narrow the scope of implicit type conversions. Now only numbers can be
freely converted to from other scalars (booleans, characters). We want
in particular to make this an error:

  x:character <- new [abc]
2017-07-08 21:34:52 -07:00
Kartik K. Agaram 0f0be736fb 3962
Yet another regression, this time cascading from commit 3953. My
scenario wasn't actually testing what I thought it was testing.
2017-06-27 11:16:36 -07:00