From 8772a16130b2a5f934f352f3e8493cb9fc422cdc Mon Sep 17 00:00:00 2001 From: crc Date: Wed, 12 Feb 2020 15:10:23 +0000 Subject: [PATCH] retro.forth: more use of inline assembly FossilOrigin-Name: 257bbb942cd20c79f9f25a41c5187a8ba34859f0a888ca07cfb60fb64147468b --- image/retro.forth | 6 +- ngaImage | Bin 37608 -> 37576 bytes vm/nga-c/retro-image.c | 1174 ++++++++++++++++++++-------------------- 3 files changed, 590 insertions(+), 590 deletions(-) diff --git a/image/retro.forth b/image/retro.forth index 893357d..a7d00e0 100644 --- a/image/retro.forth +++ b/image/retro.forth @@ -600,7 +600,7 @@ a bit clearer. ~~~ :v:preserve (aq-) - swap dup fetch [ &call dip ] dip swap store ; + \swdufe.. [ &call dip ] dip \swst.... ; ~~~ If you need to update a stored variable there are two typical @@ -638,7 +638,7 @@ to improve performance. ~~~ :copy (aan-) [ \puduliad `1 \swfepodu \liadpust `1 \po...... ] times - drop drop ; + drop-pair ; ~~~ ## Lexical Scope @@ -676,7 +676,7 @@ hidden), so use `v:preserve` if you need reentrancy. [ @ScopeList !Dictionary ] [ @ScopeList [ &Dictionary repeat - fetch dup fetch &ScopeList n:inc fetch -eq? 0; drop + \fedufe.. &ScopeList n:inc \fenezr.. drop again ] call store ] choose ; ~~~ diff --git a/ngaImage b/ngaImage index 549157f209d0bb792f6b11594baf8dda945848df..ea0cb4cc215d5ca6c18b170fd405ff539f63379e 100644 GIT binary patch delta 10184 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

}cmDQ4N z0HxQ9pufgg4Spy_DTe->f&P-R6-atpx6IqTrp4RP-0jSZBpUZTeL25N65QgBx(&%0 zVn6tBD%}#9VcC(-`XPo2%tuS3A3S(#>W#vLcW2qUCE(GX`~i%vw1=GD;`TT7)mu*z zeEY~P)X|6#=T>iS82Z7i3V8~Dq6W?*0)scJj+qO;DKceic?{>J*JDvgUJiNtV_tXF z{Aa+buYSg%40FR{1x#nioJA?<8jNS9Zd)wA;?LNYY^;-tZAs=zX#ZKZZp$)vgZrhN z-Ivc KxYf_>4E+!5IT*x+sbwDJn$)MGPSc1q4XwkO^B1*@UnM2-*Tdz_5g!5DBu# z7XCqjBW=SpC^I0Y9R!XFazKwdqGnocZ5tIE72BoBw6q(`eBaBx@tw%&o-=jM<=?)4 zx&OWIzFS3JJ{WoBV5Gxn7ZGs_pC@`mM4W1HTuF9h{K?LP7l%D3i9E^zg8wRyG(3VL?M$kJ(`DHngdB;i=KSgW$`$SwDc*yf-s06cz@q>fowvkc$I6$YOP{KY&ehRTKT&p`oz%Srxr1EH3Og8^nwy}B;>*r7a-=NVA05VI zIPJc&I@|B=O$ok?uVeO-hHQVYZmqNNN_L>rt&M8-nCD^51&_QizM)&YKwWDNDV zr@?4OMzuwyEdi!T`Ot(wS*x&=SpX-%vKGspp$WzUIX={%`~YnF?Bg3q7q|v`y@7{= z-zztU7T4UxNXSQ|&if#Ak7Muz9E-6K<8BQ7`3-ExlzkkO6&S?m&l9knQ1%iiX}?Ds zL7#%{`DXjbh%QB;%T*Yb-m4trXC?4m#zJZ3;YBM~C@)@a4(%tyRtB=+%k^MPYid9ybBjZ^ zrUegvC|i-5#pW8NA*a(A6gLw_rubT=dRNhQO5Yn)7duJm`1I-t(v}MS8rhUPHvj)! z4znT>x1-e}mRE!F_N$ctm-2SsraV3+N2o^vd*2UJ2iw!6DzTpCQ!0*Q7z|X-f#STp z_%CU`kCe%3GrGXz(RvRc6n0~tCo;+*HxcbG)SN`hYtL`D8Lzg=_z7e;a_vB@MHoYxsU!^d0WhLbOk~=bN9FZj>{hbdfJ6D39k3fFb ziD#&@yfCtdL%$yypngM|My46r5*QVBG(sl)9OySvF={OI$44!4{9Wlk1WlIceB72s z_leAomDBkP9Vxi8(5VyXR2U23RF?m~W17k zJ|@lZ%U1lGBG2RBO!*4`=83N`%Phtft48XJgR-_T#+W8s3&X}-Ia?Sum%-9TDvE-V zSQKNfht$@RN{V8Pol;&DHXf7uqOf@cmUd!{3Cfqioq`lA^@Sn6Ya(8P6eoegpp+E1 zH~$+_d~>ei7~=!kS{ydMkh8^M^E+5vu!JP3q`hf&LhC3+_h%4%ej(*0Va%bvBy9G9 z)niriWl4-V7*ZE$LiVK67-OWQmZlkFrMxt3Oqcr7usIL*L^;dqO52;uA^A|NU%K3d zIYH`XNuwdvL-JeFGD!O%os!(KE_w8>;pSmTZ^|ckO)y^ocNzL{;1oD6%A2Ivk|h{C z`nfQFfbKilHFlKwB{+v%8e44M0+$5NC8NhBV&Q)^F6`~@{^|a>S8dEr(B(2MR(b215-3@D=ThCBiHo)@lmfyVbN$&4hrOj_2tY>Ba_)+e;;Ov%Tkl(ia z;wSWWJ6c&^g8Z3foiQQF-FmKng!P7HePTkoJFk`RmyqM7c2a_*PwpZ~6Wbf7Bza!am9w#KoRE7^4_V(L z(_t@%w@3O+O7E$6M?AfN3@Ptn;JGqmAXfvOQ)cxKD_EnD>9F!?)+@Y{de}FB>WdxB zE%tS^qmE%pHw*G!shG@OB)YBquzrnWo)NdedKA`7x2{NA9)sm9EG~Ira_@Y7uYONO z=XZHl@tTskwz|SssDthI%684RKi`y$DIVX8%3}X+L+{@~e^up-myJ^rds%r=??GN* zK+h^q%JldMavP64Ik{UmNEYO(f)Gl`_n=OX%)h^@Bu#B^w)gOvPo0`&^pQDJQ@laQ zJe)K%2Qm-T`BFL&bDx@&x&#{LF2kHi`F6Ly5TS=oW%J=G#yL+BM|m*dQ(C@=^;ai* z7sg0wxoeL0ZI9ISol7rdPQ_pz`)mAO*jOd?`kRsN346rqtzD@y>kC9W+AuWLnCA9kigjlgewiLh60ONKZqjd-z-MFUi}} zLe8bA3*}llnEf4bOiyzkQ~oc3GW)BbpGxWUu$x~#+G0y{j_DYr6C`zp$9x}{XgNN8 zim^tVGZG9-8}$vey}ICg>K(FpMpE>^F3m2{vTugJXI~{*cM=5RS2+gkppI29>;-aZ zMp{%3xba=&FRQvrdPR)003sICs%;GTSyEV0U`_^CE&D3chKvWte$;{LwVeYzgU^Ca zcXSPS-4iBz7?sZEZ3j?n9Hybmco{L%pK%0|J($G#)q)pl;>yp`?l>09PowE=%bQ;5!Ay&AAoBJH(JI2%o|Z; zCAbM^CUOF(gA}MBZ!!p+ClaGO108>|U}Ea&(;4{LQZ>gFeK)uz7(2wdC}rks#z7H6 z3cMx5e-I0Yek=7#)?X7gQioi`!qiezox3<;rwJeGQxg`H+mbFVoB4 zyf}ec4E^rd4eJTnbzh42kn&@%IgKNbU&cW3GkbSI^1ced`y~O-L4H@fb5nfUl~0j< znJxfvMJncoyzeSsc7qQy{XYc%qwJrXWgL==a}&(JLXMLgbA!f@5}4;P*~gF!omY@Q zFrhi_31}FfWszP{G)~#=M_!83={9tRoF|R*LN#M(LH_9&jAB1fM=38Jc*HCu25U1( z`JjV8^BLF5XTI{eSNU+RwmeZ*;0jq?>G3U65S|D&h=rIh4V9k3YZU^3pCMM-6Wb<| z1^sq0=7+qGfYbLm`!q#z=X+`nYAa&X$_n%sA5Q);dwj@xV#l=~@O&>4dprN5Hh5#LS}GT$ z)pSg3o|pBd2n!jdWb3C&$cB=cAJ4DV1J=hmeFq9iOFfj4#JXSU8owbHN`1W1@2b+_ zZQIdu{uqjcM0|_vD#PxNH^xip{T?$OnfplP{bF_pS0ZLrit}z(gOpQA5vh;lR=Io= zD5)Hz_TNa$q^ingjs{|ZY^n+xwQ>~y_L0UakFnUYG0#ph7N+=0R2=>CTL9Tw6VL;a zzc7Vgf*1PThio|7_dq@+hZm+q9!Qj5`#Z~*3p+U)pnL}d3mI{b7}aT#y{LW7|3HI7 zprw`83mX&q3-p}WC!pMrY@=@B$FxCVKg&L{>DY)rLbfjjWya9k>Sf4Lz6d!H+f%MA zN-~lpda>W|O7dcVq|3)2S-c&6&1qP)cKa55KUuvv9Mucfe4oUw>@2S>9&L_?7%5HF z9!Xyk<1SLJy2AdD=Sk_30%L{jTM`V|ADa7HVW&W@lS@lnCOLtZOJb^f1nP*xlp09! zHn3z&Nxu#LLrSY%sfTDqLus}5>;UzxdbUsMt3B>VltrI=>mi?!=c`kU*W~kRe|Leb zJAbZKlxHBn-`s>@OS`zgpc$pHTlyN(Pb!yslI=l0R6%sYM##4?xG^f4Z_7)2N5|kI z&VtWK)6$@?jgsg?tv8ABm)!MW?~G4!6vw0ZUhUkuMt8B_j=SDDQ# z7yKNlSRLxAQ}56yq?QWh2v`2=S=%T*iK00nz292{gKLjj=3w&s2DnTqmqkB|3U6o6z+Dp z55V>@M)M<7o0ni-fz)0qy1BfUm0#;^_^s@#@dWJK@Tx-U$K*Z8(Nb9JkuPg{I8%~P zA3Cbf8@B}3dJL!F#$oi7vb8~@n>5sU+zy4)QLZD(AUU`;#Y~4~l)Sw*#W@HZPkr_+ z8~k{2);4Q#dRW>5XzxYt9EYxOGBitNPi@GZkM6UQXlNLr60}y{uFW%7ffMmPu+F^{ z95L(&G20-Yk>d}fx%N7pxITo;LmXADuKF`4%)SQKyI$?jE+^- z1p|Wt*N4xa0A+Q&Zd*Fg=Afyqg2q9_p3&A_Z zSmtuhx5Y48BG0vHIn!T4-Xx!|_nWogc8TM`aP($y2QYR>VF!O~WLyWUC%d6J65t6U z^$)tt-$Fbshab!_8^FCPUp?q|9|6ZU?jntI8=F8kNnnG^`6@V6X9Z%)OEO|ZXfW+9 zc#jdy|Fb!*bS!{2dbVj}#1YGa-v#|a4sHm!FDZonP4OyZr(D`l>BXzD@9 z-JEIck>#5cd^=Sn>;Kh&t3-H4Vr^%oVRL5L6ot^=nkh#D!Kkd3bO$KCo(BCr#yaq0 zFiJ4==K}N>l`UT~;$2emP+inp(3nAPk{CSm^yU06im}BNeFKs^$bRtUl)k0?0LzYi z)?ZYpzCHVbwA7;a4dmwvLVEy!3jk4$6~3Pd4UdLQB7epnCUf8Rq8K z3Ya@!=PV|IZozm|YPTie_kH)a6l0s@ZVQ=p&^{@Z+p^39;GUDC+w#ocfqP4?fjbZG zV;Q