diff options
author | Kartik Agaram <vc@akkartik.com> | 2020-05-16 14:32:42 -0700 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2020-05-18 00:44:49 -0700 |
commit | 1de6f280423f484ae0037e6c805320fa61d1bc66 (patch) | |
tree | 76317abc295d59a70e3b822fbca43f27ca68a015 | |
parent | 58c2fe660f20d7f84a53fb7835363aae67525450 (diff) | |
download | mu-1de6f280423f484ae0037e6c805320fa61d1bc66.tar.gz |
mu.subx: make handles in Primitives easier to read
-rw-r--r-- | apps/mu.subx | 31 | ||||
-rwxr-xr-x | tools/expand_string | 17 |
2 files changed, 48 insertions, 0 deletions
diff --git a/apps/mu.subx b/apps/mu.subx index 3d147b83..30a1dc44 100644 --- a/apps/mu.subx +++ b/apps/mu.subx @@ -8826,6 +8826,35 @@ $emit-subx-block:end: # Primitives supported # For each operation, put variants with hard-coded registers before flexible ones. +# +# Idea for a notation to simplify such definitions: +# _Primitive-inc-eax: +# 0x11/alloc-id:fake:payload +# 0x11 @(0x11 "increment") # name +# 0 0 # inouts +# 0x11 @(0x11/payload +# 0x11 @(0x11/payload # List-value +# 0 0 # Var-name +# 0x11 @(0x11 # Var-type +# 1/is-atom +# 1/value 0/unused # Tree-left +# 0 0 # Tree-right +# ) +# 1 # block-depth +# 0 # stack-offset +# 0x11 @(0x11 "eax") # Var-register +# ) +# 0 0) # List-next +# ... +# _Primitive-inc-ecx/imm32/next +# ... +# Awfully complex and non-obvious. But also clearly signals there's something +# to learn here, so may be worth trying. +# +# '@' is just an initial thought. Punctuation used so far in Mu: () * % # / " +# +# For now we'll continue to just use comments and manually ensure they stay up +# to date. == data Primitives: # - increment/decrement @@ -8848,10 +8877,12 @@ _Primitive-inc-eax: _Primitive-inc-ecx/imm32/next _string-increment: 0x11/imm32/alloc-id:fake + # "increment" 9/imm32/size 0x69/i 0x6e/n 0x63/c 0x72/r 0x65/e 0x6d/m 0x65/e 0x6e/n 0x74/t _string_increment_eax: 0x11/imm32/alloc-id:fake + # "40/increment-eax" 0x10/imm32/size 0x34/4 0x30/0 0x2f/slash 0x69/i 0x6e/n 0x63/c 0x72/r 0x65/e 0x6d/m 0x65/e 0x6e/n 0x74/t 0x2d/dash 0x65/e 0x61/a 0x78/x _Primitive-inc-ecx: diff --git a/tools/expand_string b/tools/expand_string new file mode 100755 index 00000000..a5a9ad30 --- /dev/null +++ b/tools/expand_string @@ -0,0 +1,17 @@ +#!/bin/sh +# Expand syntax sugar for SubX string literals. +# Helpful for converting them into handles to strings. + +INPUT=$(cat) +echo " # \"$INPUT\"" + +# print length in bytes +printf " 0x%x/imm32/size\n" $(echo -n $INPUT |wc -c) + +# print ascii codes for each character in hex +echo -n " " +for c in $(echo "$INPUT" | sed -e 's/./& /g') +do + echo -n " 0x$(printf '%x' "'$c")/$c" +done +echo |