From bfbe6b74346f760598bfc07dd7e94a0b427415ab Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Fri, 24 Jul 2020 14:46:44 -0400 Subject: Encode bytecode with LEB128 --- c.bqn | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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←⟨ -- cgit v1.2.3