From f3d33ac462d3c81ff8cc0e3a6ab5958be14e309e Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Thu, 12 Nov 2020 23:25:45 -0800 Subject: [PATCH] 7231 --- apps/calls | Bin 53455 -> 53599 bytes apps/calls.subx | 46 +++++++++++++++++++++++++++++++++++++++++++++- apps/sigils.subx | 4 ++-- 3 files changed, 47 insertions(+), 3 deletions(-) diff --git a/apps/calls b/apps/calls index c9568f8ab4f3283fc2fa41f48393bb25d7cd616b..1ddfd3a351fc8aee49c47f66cc7d8d1e60b84a46 100755 GIT binary patch delta 17037 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 ZzA9+c$Y-7jf`22>Q-n*M>9lvV{{y3^O6LFo delta 16851 zcmai530zdw_n$X{3xXRU0t2!miV6aPB8sAd`>-jv;I2>og^GVIEgj7=6*cvgEt*?d zx#W_X^p>;E_LrnT)VDoW8lDshH`DG97aqXc%BPzzRvaYyN@aCzUu?FDuLCTPjVJ+ zWtHhRB@Dy!M50ZWG1nlbUO30!vKT4EZbP~~q;4iL_540}(H%$ZXGu3)>P{o3j{AYG z3oAT416C6I1JZpY1K$`1yFIe1T_xG=F!1#3A6T`P$tzc@B6P|x3K{qF;tDGYTnM6obUlHVU6_E<( z+}7jN20HEFZq+VWkmPE`PgNqe3OccplNeoEOVMQCG7K|qaBwxy&LL0vhYt5KbL z@k7JXs;zizM0!}gAan;y-7lo>1Q%UXq=B0vb*mDS+Q+J8>$>2m;aNXH=+=mK46WHr48G^F73|=)#LoGa6DfNrpu!LT@-Ao6>MdIwi2L0v{8|95+F)2 zPsxOu2V`(qv&v#O zhe_Wjgyyo!G+Rr}Pf7Exh{v{3>|uI9n!ohV5qrw<1K}mLGB1~8rDcH*NapWkuD=i0 ze{vQGRNr3u9OU!lar3OBImnXZuvj$YW|+wDA=lx3Qkuwb2OGtZQhP3cnt_gIOg4M` zK-8GAznA0gv9vR>R$vA2Knc#y^aYxo<&iU71#zy=+%x9d>8xCWv$N;rm|+g_WH8JW zf^oohzqtLRmScsvA4uRpnt0QS}f%GZ?Qcg zb81fQ;$4cD%y-jUqvhjR&tK!N<-o4i!{T0+ZhnWx* z5J_j%b^+7taeUpldAJJeYQgycUmI6;f?S7ryjnKL0s`MIJiNpe(!W|5@kj0uCnDDM zYdPLURy@@{yyS4kBgJ(7OL>Ir-%#wesq}h;OdqjVc&R}`FH;FpRAN%k+o`;c1g#M!sDCG_`$$H8jqe6D3mT=LY9?^cb2MHe z?{_4kxiMOW5-EY>K?TEj+J64QJ@0FB%pjcidlUUt|I73#n=Tx-pzaj=2e`!jq7i4Qn(( z6s#+*hRtpoQ{g;-*^^k$+hx^j4IM+1m7y>>)MB2lqpS<9*>Eg#R7?8esP0jQsMFFiYC#jh2N;?Dj&5QDt#e0%%YT& zCA`qBrUI}4$A@^lKdh$tcs!g53sxR7<8NdO?q6BlDX zo(Q%$f6HHF=i+y%)N2BpT$X30tk^lLUzSqSHw`8Iz8RdThLWq8ZU zMqiKHT`;O{tm>bTjqhHz$&xlllA%@eVC6fO-esvGr4N(g`R2hf^-}OUqWb*q)jhb! za;T8G+MTZ$)bL7x$1p;cL>LQc35^mKGrNXl zFCkz(+r#H70`E_Og$a@7qbaaGLA8BfiJSY3w@BvttHk@|vx;~TEuXGH9P)CtUJ{`x zGMo`@c15t!wr?-01Y#gV_(+K15~9=u9bThDo~S!@KC; zq*@Cl<;o0=lCf%|P8*G+2Bo1C|7c?>Z|{L(c#slMjWe$D8LXP**T5Cj#Q892OK9D) zw~`BsS~gRP;Xunk2sTBg}~J>(_mt1k5Wd?`INkK8U7*f z%$)MMNHmNLn7K?A(6be4(#D~m)yH{gi6@ODoXgyUGXgi7v`Zi%%`cdNI!d4>Btjgz zcpRA4TknxVX=-Its_ZM=I9z)MS->D1cae++9;IdJYxxDPD$8dI5Dy6whEAW#Ypz5> zpAO7x_wfpOO_8`81?~oJKn^a=x9gOwK2mz3P5b>cDjHa!CFxArl2XbrX6ghOb0 z1M`H|(4|e7G8u}~i_9Oi21lD<^QP8tF1?NUCTWG4@3w}7HUUZi0fr8lf;Q-p`;f7@7;1rVHJwe6ueS8#!N0*?^@GtYCka`2xMlS@hx znyYsX8_>G)3$jK2AZ5NaHrkmSXfuy^wD&1O1 z+36PAwQZnhw)L2pmS=^F+uZb=*-KBk*mB4{vxVFNT$`Pw%%9ChW-ke4x6CroYe#2h zH-y`au)cA-jlSlP~^6v1A6 zo(~o9ld`>{bzP^lHrY05akZXe-^0e#)(vKzeGf*Sffc{_Pv|V6-LN9GuzL!o>+* zES=@7Q1n%@=y%DWnzQH!+qYFB7k98Ii4f8uR2cwm@Od;8cL+7FX$O-#1e-UugC!k$ z*}Q!5<%#AVV7EcRIQExg4$D)Hzi($`o_d06$^|DSwLV!sE2ovmeelb`*+oB-rB5aj z_SuRH2g9-^DE@FcD^y>H{SFHK8q`_52Du!U)5*Rc5tcktaUZ$J73WN-0d%bfGN?gh z`m(TZD(!8$?rRc2-V$AwOXys(-6a5i;v(>cj&5Hd?H{9Co%yD;KR~8G2>XwOeGBJK z=qCa2meL7OBmsUV+eYn?lt4_U&PsE5rc;bk0Izk5#;>?t`1~f^=#-SPmsI#l;DOl2 zoOcF)ieraLzwywuP6;g>LvH7V`cWcoA08$A^Y5}lT4;Om%SY4hJbrbT)%}IE+>a|Y zc8NEyb_bNY99OK_&g06vd&$R`#w6!yJ;|?ui;rV6|0L3K_c3#)@G*joNQ41f zwP8YRyw4?YKig85T@^~?Hy}7C9M5POIl+xiidcT*-gk-RA>V2eLp|34rsu3wszP`d z-{$qQOkTaU5?PI4WH`_6KkqOibcSGWMK<-?vyDaCbcWeoEXr^e{*Q%MWPs!06bhG+ z(02t3T^j4XEb!?Xtej@)MV9uKre9@2udag?1-5i;s8oaVT`fv8eD?Dm#J>53NrhV7 zEU>w&KeWTUu2Imfn*}dQP>JupUW3^K=HACFF` zhPA?5wxsQl8}19?-6PBio#=ura-VdbMtb_E*ZFM*oIRiQU_tkqc!lSXMeTiDnvnKs4-2sz& z_}UmLtOD{syppi)8-%=v2rqQk_E&)ITmiPF9P@4}!`FXIA;W)@oY?ftkCB5r!poG3 zUT%EiUZnGK%w8~lhh8MTO{AA3naTsguhZE`#h;wOD?JO$U;DtfJ==$Kg7lHYZ3l@+5ocHrQZpJGgTZNH>*1}62Yzwz`((5>0z^c4S4Hjd2`_8b%+Mo&J zZsDev*=&^u!)$UfnEk-Nz3NAB^uKer$>{Hhv3(4~>fyJn0GlRZClcaP5q{9#O2dC% z;OgOz5o7xr7eBjsb&=ukm8ZWAJv$cv>v zy3NWk?fV( z&?yMGIUt&goM6uC2?wIJU?}5{=87zIgM;^y8(0lo*X)>A%>|hm|KNaW|7R?eO z`*+zec2J;?zLay+ce7zeL4C71hXmfsWSCyCuV5)&ulFrXvq)!IIaHMv{0ebZy1~Z6 z0A(Z`D~wH=i9&S+607$4Mp1uh`~e#uWFKt2DF?!O*EgTefwbN+Exsr7DqYBYNM+_V zQIxA$rMWLG>>YsTjt_gsR_%sDbtGKsy+|1gBl~o!_69NT2E*1qQ9&!{*$>MQcLHzY z*NV^%b%BR{VnT0|xO!J|ymo^j%v0+ihY(VVq5>Pxvw`r{hlY}x4rN8Lp(P}p!2q!? z0CSuGJBp%$7SVHe-9alsI@;?3*CU zn3t>RYd)7Sv71X^0UwCK@*%lzZ1zNwzJbK54PPf@u25TLIajzst$SanAM6IJ`^NOW zNn+3Lg!P9gq1^`=<#py4)X}d`^Q?2e!Nj4Q2?zV}pNQ`CORN`9r}-35K}-9c;pfx&{q%wccfnwktKY(Wao0#pf@YjH-2pM$q9u)NZc(8U0Iu$ZY0+ZUJP{jAuY9l^- z3G(@pdQKHjS}x{fc{pPp4f9F@mGSU?$=q(zNjW=t?UCU`F9$GpwA=-ky1F~R%5bM{ z?E%jZjA?e7#5a*xwT5eikSqHmL-Fqd_=nNzuRY+ifiqp!i<&(t&$8c)5bVBCIw(3Y z7}+Aj6)Od5E7&k7HlPnlCnB+GKfP{HP)$XovjEPH<$>I{C){BBQ}J2+%GpP`4c zHdmkj=#wwU{5Oj%IX*%@*k~d*GasW#N&llyGcFG^KPAm;M5ciEkd6&Ce9YB4+@Zio zAp`$4*~#g|{_4Y?Fm_0=`AJWhHzZi`fDebn*=qH|MrhA~99j^Lt$f7P@|PRwsclIs zSZZ})Ejl4-O{LcVNK5}YG-Ex>TJ)$@lUi?+)@RtawB=c`<3C_EI+JQQ-VrX(klI?O z8fsl(Eq1wEY9WA^HdAWVf|W!4>n0O-faJD@V?zt;@pxOx{wui=^VaQIF}Tw~d6L|A^|H)6IIivmQ_Q5XJR)L;#o*CDlZ+ zYRiSOTRwfr-rts(huRD{mDfR+eBO|l9Z1WEF!AV0Bc94Dm~!F$WWzZvFaDk zZ~AiCf}==(77>;V6AK$&en6(`r~gu?L>deqF;dlayGZ5&0@%SQ@Dd*A57Q$hX4QJV zX~b5fUMDtXW!2JL*#AoHa2Iw2G#Ql<(76C@_||0ECPE@}x(~69%4$B0WK=|}R`!N; zGlkf?n|?0rMeuM`ee=cws4==jz-a-ylaE*i?2yqJ<_86^YP5fY>V*h{;D|nLi9`>9 zv!l}kl1Rv5JrSo?3M*_(240z#j0vtz+YkMu17?f~R>r|QV?um=u-oZ>$uW8T7^MDE z4-po?r(?D&&uyLgzgQ)4I%4K(4GtS=@`Cz*W7Jv5cWjHM5Vg$phE!c&2wy+b(tMy0 zd`nxHPZmOUX(RKcLKt5fV7^`mb8&<_^0v}2^KXUlMQJ0&1dh`BiZ|3Bo1{cR*Ri1i z&3hYJER%~r6?bf~ez805b#ljjdIsaw2FWomaaK9zPryt$E+K4wqssWL<_gn_r=B1r z?TJW)m%+vIz)(t-RaX%8f`;Sj>!DnF%{`Q(a?GJ@mtziPjT~mK}Z6mWDYSuVF^?ppQ9{>-0{gu zA6_&-D4=6CRtcCf8 z0z1mmZC447J26D;4!w28TK?NGXX_AJkHvbeEBzm@ca*LE(~(xVL8%@^2IvW)?gTB6 zpv_RrrlYJDYWlcg1=L&f5H(4lP7vx&RL5D-4&#MZ522-lo)X6vJ=9kb)TT}n`k_MK ziMmdrek`>95DUDHIFiCx#hhXl#ZDP{ZH-ricTX{3=IQy{{433SK8% zBI_w5t4mt)(4a@wNBW*Ya`(tuN$C}m^0~n+vH;ZZt0b~>uyRs;TVg*Wu-|#ra0zV9 zU!pPFke2)Izj>}G$r6&*!(x=XIbI+%+ztTQ3&@aar{YJ{hDlzw`yz&CD#l=uG5q;- z46(w4TGSt7@O>%;^z)0KKI`F5#P!E!pdmWa~At|qmApfeGcDyMdUV_q))%zFA5FvtF^^2 zwBbbN5!p)Qij63hU28-n9$Qb#Co+Y|Dk8rVxr#5O7K!VP_8gIM*asRlq-Mc4Lz_ax z`YMuVi7Y2_lt}DCB)LR}Vs_dpBJHrE+9D!17dvbYZ5#HDRux|&t%%5eA~Cq&Xdbv8 zY9sJSsC`3Z1RgfENIW}hQ;6Ik5{U-{ZOT$4SBUuFIbBnU1mK}r+f1Y;?&sPWBHi!< zPiue|1=>*}b8&UnY=?;cMWh980orIHZxgvd#0yt+?FS;^xLIk%L>3V_NkqXNT$@DX zO(NHcnDJnwbtTejEs~DwkZdQ?V*`?@A0b)25lQAIB<(iakZ#(HWabtmH;D}T7|B8+ z2Z(gR4^C|sk;6pjdRogMQbuGGky}JcwKMSp^12$2;;l6N4vPUNy3$;zEb zVs_zvtgS<;)!B`tfXF!_k$5$(?Ie=A7s*^A-x8Uy56K-OmikHq@|k{5~mL8SC^B)5q4y@+JeB_v;dfu#LqBwel`dHowC zXRjhruOm5j1If+rko35PBzx>_q}%Qw`S^Pz_`kh5wEINTen7I5$ke+?>_n1&L{jx0 zl3PUH`3cG6he+mcRi=3=O3Bu0wr~%;h}hbAX7}of7d%_O3V%T#I4{>06M{eB#(!w9 zO~hxqRH5fK_)J$P^qh^)^ur-~&ckO~lj(T?KGP0Q&niCC?_cP70zT6ZCg^z@KI4D* zc{V;9_>1uw@og+vh6BUF`}k})*o@DHgI)M+I5>jOhJ&;CY&f`r&xV6L_-rKb3qBk8 e|KhWO?-d##9n=q%4kEVN=D(G`HRohN_5TOTl|8ut diff --git a/apps/calls.subx b/apps/calls.subx index 9f8b2658..d3418cf0 100644 --- a/apps/calls.subx +++ b/apps/calls.subx @@ -821,6 +821,8 @@ next-word-string-or-expression-without-metadata: # line: (addr stream byte), ou # ++line->read to skip ')' # out->end = &line->data[line->read] # return + # if line->data[line->read] == '(' + # abort # if line->data[line->read] == ')' # ++line->read to skip ')' # # make sure there's nothing else of importance @@ -923,7 +925,7 @@ $next-word-string-or-expression-without-metadata:string-literal: $next-word-string-or-expression-without-metadata:check-for-expression: # if (line->data[line->read] != '*') goto next check 3d/compare-eax-and 0x2a/imm32/asterisk - 75/jump-if-!= $next-word-string-or-expression-without-metadata:check-for-end-of-call/disp8 + 75/jump-if-!= $next-word-string-or-expression-without-metadata:check-for-open-paren/disp8 # if (line->data[line->read + 1] == ' ') goto error1 8a/copy-byte *(esi+ecx+0xd) 0/r32/AL 3d/compare-eax-and 0x20/imm32/space @@ -954,6 +956,10 @@ $next-word-string-or-expression-without-metadata:paren: 89/<- *(edi+4) 0/r32/eax # return e9/jump $next-word-string-or-expression-without-metadata:end/disp32 +$next-word-string-or-expression-without-metadata:check-for-open-paren: + # if (line->data[line->read] == '(') abort + 3d/compare-eax-and 0x28/imm32/open-paren + 0f 84/jump-if-= $next-word-string-or-expression-without-metadata:error4a/disp32 $next-word-string-or-expression-without-metadata:check-for-end-of-call: # if (line->data[line->read] != ')') goto next check 3d/compare-eax-and 0x29/imm32/close-paren @@ -1192,6 +1198,44 @@ $next-word-string-or-expression-without-metadata:error3: e8/call syscall_exit/disp32 # never gets here +$next-word-string-or-expression-without-metadata:error4a: + # print(stderr, "error: unexpected '(' within call in '" line "'") + # . write-buffered(Stderr, "error: unexpected '(' within call in '") + # . . push args + 68/push "error: unexpected '(' within call in '"/imm32 + 68/push Stderr/imm32 + # . . call + e8/call write-buffered/disp32 + # . . discard args + 81 0/subop/add %esp 8/imm32 + # . write-stream-data(Stderr, line) + # . . push args + 56/push-esi + 68/push Stderr/imm32 + # . . call + e8/call write-stream-data/disp32 + # . . discard args + 81 0/subop/add %esp 8/imm32 + # . write-buffered(Stderr, "'\n") + # . . push args + 68/push "'\n"/imm32 + 68/push Stderr/imm32 + # . . call + e8/call write-buffered/disp32 + # . . discard args + 81 0/subop/add %esp 8/imm32 + # . flush(Stderr) + # . . push args + 68/push Stderr/imm32 + # . . call + e8/call flush/disp32 + # . . discard args + 81 0/subop/add %esp 4/imm32 + # . syscall(exit, 1) + bb/copy-to-ebx 1/imm32 + e8/call syscall_exit/disp32 + # never gets here + $next-word-string-or-expression-without-metadata:error4: # print(stderr, "error: unexpected text after end of call in '" line "'") # . write-buffered(Stderr, "error: unexpected text after end of call in '") diff --git a/apps/sigils.subx b/apps/sigils.subx index b076d24e..d5777f2e 100644 --- a/apps/sigils.subx +++ b/apps/sigils.subx @@ -1,5 +1,5 @@ -# Experimental syntax sugar for addressing modes that expand into /rm32 and -# other related arguments. +# Syntax sugar for addressing modes that expand into /rm32 and other related +# arguments. # # To run: # $ ./bootstrap translate init.linux 0*.subx apps/subx-params.subx apps/sigils.subx -o apps/sigils