aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-07-24 14:46:44 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-07-24 14:46:44 -0400
commitbfbe6b74346f760598bfc07dd7e94a0b427415ab (patch)
tree20960f4ba1f9dcd84044df8d99113113a312dee5
parent4b4b5d9c2d94b853f874ad06a0dd015e51a29d9b (diff)
Encode bytecode with LEB128
-rwxr-xr-xc.bqn9
1 files changed, 8 insertions, 1 deletions
diff --git a/c.bqn b/c.bqn
index b56c4656..bc15a164 100755
--- a/c.bqn
+++ b/c.bqn
@@ -138,6 +138,13 @@ Compile←{
# Targetting dzaima/BQN bytecode:
+LEBv ← {
+ b←128
+ ⍷l←⌊b⋆⁼1⌈𝕩
+ o←⍋⍋⊒/1+l
+ o⊏l{f←×𝕨⋄(𝕨-1)(b⊸(×⟜f+|)∾𝕊⟜(⌊÷⟜b)○(f⊸/))⍟(∨´f)𝕩}𝕩
+}
+
DParse ← {nv‿r𝕊𝕩:
g←⍋+`p←bB(⊣(≠⊸>ׯ1⋆2|⊢)⊐)𝕩⋄br←p×𝕩∊2‿3⊏bB
sl←1⊸⌽⊸∨𝕩∊bL⋄sr←¯1⊸⌽⌾(g⊸⊏)sl⋄sa←sl∨sr
@@ -165,7 +172,7 @@ DParse ← {nv‿r𝕊𝕩:
or←⍋g⊏˜∾⟨cn,cn,id,id,b,b,rt,1+/a,dr,l,l,si,si,oa+1⌈oa⊏os,(dy×⊏⟜os)⊸+fa+dy⟩
bc1←⟨0¨cn,u⊐ob,1+(id-1)⊏a,5+vi-˜id⊏𝕩,15¨b,1+↕≠b⟩
bc←or⊏∾bc1∾⟨25¨rt,(11-⊑bG)+a/𝕩,14¨dr,3¨l,ll,3¨si,sll,5+oa⊏r,5+dy+4×fa⊏tr⟩
- ⟨bc,u,((0∾ft)⊏(2/"fmd")≍¨6⥊⌽↕2)∾¨/1∾or∊(+´≠¨bc1)+↕≠rt⟩
+ ⟨LEBv bc,u,((0∾ft)⊏(2/"fmd")≍¨6⥊⌽↕2)∾¨/1∾or∊(+´≠¨bc1)+↕≠rt⟩
}
prims←⟨