From e8ffaf29cea786e1c1266273c65bdb5eb42b39ab Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Fri, 21 Aug 2020 21:20:38 -0700 Subject: [PATCH] 6719 - error-checking for 'index' instructions 1000+ LoC spent; just 300+ excluding tests. Still one known gap; we don't check the entirety of an array's element type if it's a compound. So far we just check if say both sides start with 'addr'. Obviously that's not good enough. --- apps/assort | Bin 44420 -> 44420 bytes apps/braces | Bin 46283 -> 46283 bytes apps/calls | Bin 50930 -> 50930 bytes apps/dquotes | Bin 48042 -> 48042 bytes apps/factorial.mu | 4 +- apps/hex | Bin 46600 -> 46600 bytes apps/mu | Bin 369220 -> 387380 bytes apps/mu.subx | 1218 ++++++++++++++++++++++++++++++++++++++++- apps/pack | Bin 56999 -> 56999 bytes apps/sigils | Bin 58652 -> 58652 bytes apps/subx-params.subx | 2 +- apps/survey | Bin 54352 -> 54352 bytes apps/tests | Bin 43192 -> 43192 bytes 13 files changed, 1219 insertions(+), 5 deletions(-) diff --git a/apps/assort b/apps/assort index 22eb2a5976cbf94bc013b93871aa723cd53f49e5..1429467ccf3b2f322be921073e7017dc7a1bafd4 100755 GIT binary patch delta 16 XcmZp<&D3(6X+uRBBirW6GH!DKJX8iu delta 16 XcmZp<&D3(6X+uRBBlG6UGH!DKJVFLZ diff --git a/apps/braces b/apps/braces index e5677f9308b3b3c9b224098e054f8a815ff9314d..0d80ed738d719eb646fbf0b71b2f82ba9ad417c9 100755 GIT binary patch delta 16 YcmX^8lIiqIrVU@J8QC^}t-fXf08R48orvLx| delta 16 Ycmey=%lxUAdBfipM&`}`TD~{}07=dWqyPW_ diff --git a/apps/dquotes b/apps/dquotes index 50feebd394486f12cb1d6c413131e62927da7d1f..f5d807863a5e79f9c23692d689144f8126ab0e3d 100755 GIT binary patch delta 16 XcmZ4WooUr~rVV;^jBK0r>#A)5K@tYS delta 16 XcmZ4WooUr~rVV;^jLe($>#A)5K>!B7 diff --git a/apps/factorial.mu b/apps/factorial.mu index 4c389a57..7be73342 100644 --- a/apps/factorial.mu +++ b/apps/factorial.mu @@ -31,8 +31,8 @@ fn test-factorial { check-ints-equal result 0x78 "F - test-factorial" } -fn main args-on-stack: (addr array (addr array byte)) -> exit-status/ebx: int { - var args/eax: (addr array (addr array byte)) <- copy args-on-stack +fn main args-on-stack: (addr array addr array byte) -> exit-status/ebx: int { + var args/eax: (addr array addr array byte) <- copy args-on-stack var tmp/ecx: int <- length args $main-body: { # if (len(args) <= 1) factorial(5) diff --git a/apps/hex b/apps/hex index 98a6e819d936cdcd79896b26b7dcfe6d361f9803..cf837a45f8e930620cb4b1ecba8b1501cb9f6967 100755 GIT binary patch delta 16 XcmeBp!_@JHX+vQRBirVpnrW5*KavLl delta 16 XcmeBp!_@JHX+vQRBlG5>nrW5*KY#}Q diff --git a/apps/mu b/apps/mu index 33169c68f264380252a3f296255fca40b6d30b76..7d9fd73e0cc5135e3f57baf77c2b7034668a2a2a 100755 GIT binary patch literal 387380 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

9(?tYR+{_ z!|w!4p@!#SCmYg$9-{)OIU|%IHAYx1QbWWjNNTJIRY{Ezqco|pqSPlfNKlcSJsh?T zaVkA|8jB|S<|RW<-?qDK}u8V25i z*qM0SOTG{s=QY-)MEVGIDUma*BPBA%C`O405!z59XN(Gzh!EB8C9;;%*z406B&WhN zo!Y-}yg9ZZGP-c{XYuN%=C0ORMi0_5MkqvDh_Gg)MTk+6v`}^EOlC5tq~)t03Vb8b zRl_If=&!m7ukC3{i!^o&l^}zAdVE8ZY2Y!Vz(d(V@@N>H7Ji(n;GDF44d`nHD@gYR zrmkV5(pvOV+2M;EG-LF&ns!c&+iAOgsj;dnNaBtYm>Q%e;11$qg*MGOGR-??n%P9F z`kO{=*1a}9Q&?7o)!E6t?f951%wZ=dIfo*@2+oLpn>zP!$4w0p({oc}ao0`FSiJA1 zhDz0WTSlkG=iZx|F{b;b#){~_k*-Xv{>60Q^k7jvI6X?R3*(ATbQjLrRj6J~Sf~(ecSG#c#&xR9q3AJr#erqo-nz z>Ex+!xPzx+D&DzM!AQq$!0QP!p|kQO4wK%|9=G7)Jp$}$qoNzOu?k%;%xXijg* z9FBt0vLH@LQ*%ZbiqsfkQ;`}X##p4rVsnw2vADrV4OP0yfK7$kn$-AoE)R_cT(!(g z2RO{Yw#-a69jQUtc%){GF(2{1d4wuQ8IbfKF(xEESds}vkL^aZ!hJK)#I>0^YY_nubbMg#Ari94#3jlW@k)jBSYXIuX~EOm!B(uS!kt*G zSW`LN5hke|n6OnU2PMWZl>^7NsT^Kfq8>qFl_`i`c`OHREN&^F2^nP+Yjin4yi!pP zZv!fMs7`9Ju^haJ1&bQUq4=yjT7lyh9m~RtTDB+)D7bP_7Dz3g&rq%2R2G1>&%&n< z%EGB%k95#Fi%=HKSa(KgpG+tVPiyokWidD4dhiG>UFoPbYKx#O#73OxV^2+7ksxQH zoIGl(aO#VBsP_{Emp$O&WT{H|nb4z7narHBN=VmzM95Vci?SeV*QZL`OBrS1)Vca+ zZ&8$mS6@Npa<(bT0va1w-x#>hfs-eA*+a=r$B=kO$(Ub!gG3IVUCmqGLweo_-yuCn z*mFpa5#u+c2V<`xJ!g#1kRB}3V@MCf{z7`rIBy|6T7<9Q+_e$o>>6c_^AyTJi}Dl7 zfC+jD&WSZO=1zyBYHE#Qh_ZsRTalTm=NIt~nDYAJLdp(!$Qd7LgvYw4nw5xhm?L^` zIWXb=TMkN04=x9e`*1nD#TO>ZK^v=Pftk$M208)?3kbB-SPs@Wc1>cBFtn+^mW1g= zv_>`H^D*d|gqAvBoE4{po(!t3DW?vNdOIb4gpDqo>i*G(CCb9Hx&WV;C<})kB#%Bd zQ5IfpMOv4nh`{OsE{S8BR3^p}Rr4t)=jj$U%=+3~xUEq?2m^Oo!a?i|TnX6Q(VA(_ zXXpes6g>F07q!I|;#V)qnF<%@<|gM42R5}A)C70jcem4{+9RtwM`qv+A$Yq-GhFT3 znZasia{8i=QShFf)~?K~u3orjcX}S;3$vzm;WHDtjC#C&x9DR$;iAAj{rI3op|{78 zkXjTn##^?ZtBRWOU7;c}0XC)@o_p?r%d)_5!#hFX`eC@_fS$A|B0=ZQmIM?>j`%#0 zB}W`|Se!i>xTUw?<<%1mA@_&lwy%GBYdTrJm|E79YQ=rC0D} zGBcx2UZr&lyYtr3i*lH)7G^754oui2mxB^xf6IYmV_Obyam!i`8r>p;b`EAA{2E$( zs13G3TV|F6I1V3mM8Ia}^|2XvGcew0Rt{u?9Qg{oj<_7KM&UcF>@R7J88*p}Ds!zZ4DBJ5fk_OLxm!yRZ>dz&W>4BM|X zJjLx+8kAUjl?JGoozg2gX`mXm)h2HgYer_je9m53A?q?a4Q8B~ia)eUJ&+4x%u_0+ z7_*cLC&C=1;t!~+ZH7|eM46vd0I_BVA8Rk_R8{k2*qMP_Gjp8f!dr{t77m=EMzK1p z1t&vs^m-23yga-G7vAa94J!il#zcBW5-g`2+&ey#hn1InH_r9D3z?DCRU>&VW@OdO zk#J=PE&%nyC7{jilY6^*dv?sg;*7S58CW9#0)1ucPRS zth1sV)?JbfxqfjhjsUU(-vd{k(%38q0tX5dVekhE86E@%iWul=_P{VuXdWyEic@?5 z87Ok>pfXVKVgrqKhzAPaP{iNXtN8R`eo}1rs;-K0#0Lz{$0P;}M2i8@ z4*GzxBhF3?7&GP^#elJ+&QuH-G>Tec#_kNtxckCO_>ciSoeJYFOtIk+ICy6kt;mdoA(!4` zoWc8c@U|#irx`hGr1K;~(cH}Vx|PbS__0`ZY|%Vr2gly^iaokATKc7*ey!Ea8DK6x zb;5Hh*1?n#h$9Bh61c)+V+l+#!(R#9Ji?Vg8grVY1n#leJ8*Gj6g1iB5*YZPNC~8I zCqqhLk2nf~my;#vL)_VqQrM#odz8W#Jl#{tqW#O$>c zwty|MC#|KhN6l4B;R{Yt@qjX#au`O7ZQSC8ahc3yS^L7a1(wMfco4$u@5(hf@ngL? zhuGc;rwG&|4bFaUWfk62*VZ&(oQQ#8z?k7-W5AFBMX={o1IFedXTU)9c$8^GTj(a1 z0RtD?pdB!nvxKK9gxS>_#&}r+S--5c&Wd#RaiaD|5V(RRfX=5YNjo~?tjWN=jg-fn}ZCA-@vdxiL8BKANLRVV9c zpC#Z@{X=|4hvlsN!{)B84x<*wmn;`?5aFPzx+))Ev}TU}#Yz8&m6*%G+M)yz8qvCnHdvs7S3R}q?wG=07@@Zlyb#4OBO zqDmaoH0@*=%nnRZ$*H-{StZDAk8&X$!Rh5@dk6!;VG*?Cb}u`dNYSY$MfDj*zEKX& zFtXmsDh8}z=hU5Zwo`COiKQ_klj@3zUcr6?19oJJ8w^F<0&N(Ae!)Hi%so=nZikK# ztlh8EC@A)8Rgu_^okl?&NJp5_3W_~j7h(4jWyf7xN*?V_B`IjAYaf&%f9l#&0QDux zf8MifOhxpV76q%pp3;Y*O7bwoL)d)r!Ax_8Kqr>X~T`_Zmk+|XNULxpUI z0e7T}2Ton-G9k?Xbn6DYdZ`0wTq#UTIiqhW5bO z&{o)OZG(TEE%{b+l(KvXYn6(ZK*|RTF9(;86|)XpJ}55$myb~VJWctSu_tNDhb?x7 zMjzHJAGiU>h79~gKYR-t^yOp69pQ|87_-=uaZX2(^X3D9h}aja*85@uK#kZg8vt6M z)7ZOc13-=1TpIvfaL>)LrOvTX^i%QmX_gf=>H73aARXt=nGBt6q`gu~o;gGvHb(b% zc4fX*Cb*b7+Co=z-~jiS*+bBYgQwbX^A%ZO2R1Wi_Kvaz7=Kd&S#V{bfyU;!4A$ayxeTxvgPfaL2A;9R4Q2;FH?=E;la+hI|yWPiT+-<-kQ~$8CDsVq2$s z#d!uwlRz6W;+DV_9$`yhiWyN$;N}su1k&OoW(mx(BV-Bua(_=lNiRDn0kHv}_o3k? z3emntknCd#h{dNOxtVB#lXRxYp}Qzutd5ynl#*4%ETR;)fUeo*q7?S1c|j?Bu@eAu zJU!y{dX-$8Lhs$RuT6<`dT6f*-p|VmM9!7LX8EKH-Uy3O21?jMlmQZG#Y7)GUMOrq z$|y*2i&6$yjD=~5_QB)pWqj~R54VgG$`h<`LD;y;p5ErJY2ZC7#l(vMV%_`r!WK6@ zMLef?I9dLP9J~{FV@y*ya1o}e9GHO8+or1=xF}Or4o<9T<13#+w#&(>w{uEo*Njel znuhNFid$ND9v}@fI?Lv~RSReF;qg?;LoUR^12fy(Ls|q@k;QMd+jWXI%z7D|e7PYT z=n)x~)VuRj^YHG_ne%l4I@sGpRH}`2m{q#h6c=R*|dWxZ&D9giZ#7E5tuE>J8 zexasZepOeN)>l`thYJ(D;M+IA{>i$Eeu%ZqT&lUX=9CE#@$e@>5_zphsM)wB@{B9~+OkC6h6qEI$kh0M(;RI`O%{297OI^n zruND@+NbA(CMtn0!a^l*gbh>zLyUb&;AHcZKvvv3B{0Ssrv%;v+myg{=24z3Wf`L|B|8?pn6pbCM_{Ce*w}oWxqciLPT^ z;9m12#<L;h_PwKnIf!NQQ|l|R-7ryf)%I!zhb-4fa2g;WX4)wigDY#NWaL|81oiG z6Jg+DsKX{MhB(H^#c;8iiylKy%vX&{AWu-A~O} zd^AW66+1?xMoSnuQsWidSkcaEYP_N^9jHvJ$gyu3NRP&^6-dt+v2@A{lj*@CUL24f zgq->4-Iw%WQLhF_k5c-(0IX|&@KNSWt@SKbTI=XsudmEvYkM2rOhNn0#cX3rz6i^h z5+Q6CQv$?T#gs^F6H~Gkw}>f$V(ejVW=bq$4c$kY^)^pRwAja)Q(_f+lv&$VygO2c z^<>3WHw2@n8eDHo3sjA>Qv`}wSxt*oQxq#VGc6XMkV?xJv97_!IW1JgIjFP{F-M=$ zLPec+N{bOZ;Dqg^pLm4})~qMnPSLMVr~M*rm7^9*BkeQqfX6JB7G2a;*Cd%mg(SiV zOPs_KHoZw4F}5~|m5pl>U2$ug#A!^P`vh6k&bGa`qa|(D50Ww}zKG!LbVlS6zmm{0 zGm+n3PH<}(wKE=7g1DvB5(;2eR1?b@VSsq9p2%BteKnDj7fcfgW7bU*c_WrjlX&7* zQ4@Ki7E_a%0=w!lHZEZnzCMkN#suOxpYMzyadk2C>w{(^W^IJM|*btY_8)K472Vvt}I!AFcT{^~C z-c64_i-5Si=Q zjT+S(iWA2ue{rTLT`x`@RBc=iH}i%6)84mrNpc%!YDMizYTA+|TPss*ufWT&x`$I! zx4vsQ8cII4c4hg&ezVrg&8o`oE=_e+xh|Y)&guWY5x6Cg2_O@RsG*M!=YgE*PJDrk z1R_2J0s$C`kSj4$6>c0T}Dwu**sBPrG|Q_+KzSHG0$8 zW;Gf%sCrTz)q_4xV4NrTC%@v@%$YfpBxX>k;jvvuhXq2D0yK_S9i14jikcj0O`;ij z`8k0)Pmu<3T?W*NCMijqXN4|WYV*AK?C$FCve->u{JA`7_tErqrN!7vetAtfTfVwu zp{e4{tzJ?ma^%KVkDqdiADlgX(X8$X$h!` zbRoKKv588Gqu#M0b(y^b=5-PN@&=%6Q!_XEh zW~;&6V~4EX@(GLnk#eME?<=mmFs&gN!zHJKR=smNX24OWgDan%j^uaW>DYxQPsj2*^>l1~B+hjnIoqcTxH7is?IZ?y z(cLTXyEUP>nkhEu7k=(70o>qc&?VcuNWww@uFsJm&nR&h0{9W0WC47L@?vr%wr>{)-9{K(7oQ z6BDZ}58r;%Jd_k6gIJfJBFqYz=*=dpeyU6ikjWY;!pyKq3XVaFngx_ngq_7*Rg@x1 z&&tOXltA5|6j*h5AqB%hf7Cha1X$ON!zplqGZHDVu2U2#c;#~zO__rt6DrvQGD;Ph zFt<%?;_$_HY8R6bXP(Zsv*jY2LlNNRYSS&5&ptw;X`ujfPzegyDyN`84Uh{8c*Qa( zu>5p`0$p3Uw-ji80z!fAXCf5nCMEd|!Q>h=<|ZW4qDcyg)L~?1DTz>%wU7Wt(-#t{ zkvxV(rk?JPBya&{LxQg;4hdL*>rmjkNDm2afc=o*yJ!#za9ciPWwX{Zq2JaU>)oO` z7ovf4upt`YDj%Z34KN}a0g4mRp!r!54Zb#%Z)x!S%!mfx&y8sCui_Tne@8MW2mKEK zhi~xcyjvqJlt@T%-3}3;qq3wr%RwYTl~p5xb7a1#C;*WJM-et6hO*pb=|^6KD{l;|VlkBLfOF zLeGN~jYh_WPNSv4b7Zh8f<`0Y>OJ9WNzg<}tDU8#=oyUw!||$n7HNPv6LwcLrx7p` zdnaep-U>=@Y?s}9yrMxqeV>2A$*8x^x4ZSiqGn?EnqMNWHgB*Hmbh?Cr`USZa{o%N zX$<crAd^}>o6`0NKT6y;pLCdNL0j}LR=`8#y%Wvf*d@e5r3h`+$c z>^W1*En*3LtJ}TqqLno2I~HKXA_nhsb)~Jue2XsMamYV_OtSTqdA}+(uwzX{Euy-r zqLvU?S5b>nD=TVT|JsULQn9+CMmE=1)Y$$N7PTaEjrC8&(>SooA{R9<+3H(z_+j(q z54r5ob8gZFQ*5>XBJaZ~v-;p(fRIZ)Ge7DhIsAEXu7)1m!H^UyCV!F3I9^OH|4K7s zYUp9#OxdgIH%BIy<+_ZOTuAV))}}iaKhj2#Z%)9r z#Jge0qvAL#Egu;54$hEAy+bqPQSY5GKD8_esc*b{naK?A~?ikmLDs=(B*=JYG!kSTo<@R@ zrZh4>x%o$WJ*?Pd+#LWhxdZm8Zjnswt8hb%Ym7RT$xJMv8d4+{5Qr!eOHu(vVpxAX zkyua>P9z34qlv`O{$L`pATyR2Ls%P3-asgkT2d&dnOc^0%&ke9CUpl!&$N+lw)alm zfzx_+OD)nYp-hb(sHaRV>LM;=N-e%9y-baKWd=-%!F3sCYTQ6gW@=H60?pJSN`%0y z)=VwRRl1p4M%y~hYQNiadhgG)?c{{hb81h4l#l5(IGfnOG3w)aG;j_wO9Ncxur#=( zk!qHPrV*eRD-D{TsM6pU{FDaIUwwfF-_K2H@J&h@U8u#mj0`YQA^{-+N+cqhcM{1p z>njjJItmu4U1}l;k+l?vr0SXcNCfCe*;JJdh$N^IjYM#PB8@Z>TxA-GkOPGpi6pp6 zH4;Gwi#0aQ9{h?Nm7>KD zP%2tMidxa4`Y9Hz9BrWA(&CztKw4x!*`k$WlCJh4M%R=LkS}6EAreL`Dw>QD%a4u$ z63ahT8A_OVR3uKeJS|>t_XlPGkoa8!@jqfok>NjL=|%L97}yH_(PHb^A2Dno^hYeo z5&0vQQ1bm|;E!06EAB@uA{h4jIj5qsRM&B~US|(bY-`I#Cr96fUp*dOz<+CweTy1e zye;0thS$;G=l4Z2V|xe(iEIy6C5-K{N(017EGD43Oke_B(A@ns|4vnNH|Q&SH-sm&y%RQVGy6J6qjr}= zIm6{{yV`Bp=5D#0PuVzU`Tc790FAzLQqwYDua|3fpKmtVZT|1@@O-w-*V!EHZGM}t zH!NG{EStZ{9ySbQ!Oz(rcE4izYlU}#7^uM+5LES zyIbxy&lpI7%N@ST;qloPADHHo*?l&D-l^;19-ap|+ua5aW#23qT!qEn9`)cK@@CIo zJ^>{h!_~rTb_c0NbLg>h8YisCrWf_Np#O6aMnZ|hYd5z{E9Lc8o_DrV4hiajS}zEGqa80XOw?)LBp<6fR=QU|}{JPsKiP*vER z5^(_Z<`q{cA1ZiS@F|B;3_f2qdBMj^U&}OT!FI}A1t0PoqhPc1zvNo3R0R$;y6{u5 zY#(fSc`C(SP6g*uU-9WNl!5=OzrPWGCMN}H>i5>8VGz~Nkg`1<1M?1xLBGlRyMHQd zR2WKC@d-Z_D9ICU=%}v~ZV)Jz6K?3Ld=qX_E@ShzpmVu4gSjl$V#Xru?UB%WWojGG zsD)Z~gkWNAHxXt4qkr)0dA_)XRpwYue+&XuzO#6y3nYp|7iOT*(++dcs9n`8G-?(w z4~^O@GtuZ_zqx4CJg^AM_KgtqzR2ac*L}&<{Fi~X%kunhgn22(3S`I&Oz;{dGtvk~ z7iFFddYil1&6b_@HoNh1)qD98mTxBL5G}*y$4$oGpzmGBW&36b%EUB#I$&y=0XR%f zvxWiF(+t36f||7~n<6~6;5J3LEIWbN5iZ4reX(eUutnmbXk+wQg8_k7i3h0*s}$GF zVV>dus&*=_eZXMF0V&HB*UE3g;&6htEDkEtsKtTTTemp85NpDCR-HF32C!azMK%j8 zwjz-nYpY0v(qJ~1Qjtiml~W`{aG@mJh+HVyJE8?wlD5p|N@}UpY@95*5NV&hjx|rJ zS!?s80NR=-)xPva&E-~{0^-b*5}#_G6wWzv76yO9+naH(bn!P5)VHM>2X`4-5XM32 zTZ?U8DA$GkGB0d4v6LjwSf%yo5{Wn;1$Lf(Jz$tg5^$#m2=T>s1F9emY9xMC%pb=3^syayy&Z3q9Od` zwCvtm2_AU^4U>H<(Sneka*U{{8hqGwbu<9O~wF@|eW&p|s zG<(`_^qaL0n)zlBHHN(zNYIowgQzjypTOwXJVoWmREF1}PhhSait?`#Ci{jE!+=R{ z2%#1M4IdAX|Aq(-(%-OUfb2I!aFP6mO@rhf7q*%aItARJq7;uq-(+TAsdS z81kWv()1h62A+T}GxG~l+@h_+oVP%!n)DVR0khr$O_}x66)0+emu)#^V4r82z zSDIm_RZhZnndc7JyLz5BvWDF~U*ZVgb;NB&bJua$YS*#hT2XDzYf~NB&S9M+ z5vm3`5}-6fOdA}Dq|9z)Gry&c1ZtRV5{X)yZW4(X2vKb`(F@k~Wp!tuFRWxKJa$2Nuawmwx>ZkOn>H<>G0{$QcRyl_h48NyHL2c+Z zQbg4HkQDHsLrDR?3Pf1AJJ80z5@Bgb1>LhFbl4;bco378m?UZV9`~e=Ng#YC+Lz<1 zWRWD?(`wR45+1*7&7C}wgnRBtB1rfP_=+u3UVz>B#RB?e@jkm3geEM3w@*kHtGynkaJ&JMVeo7%|or;?V= zQh2xJZAJMLrZW3%MngO~iyqs&o8t~^wft)XcV1ofwSnPRyto&8ZQw2)YrHl%SD~d{ z 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 literal 369220 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 z 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 RtycsL9^7pbIvcV`{~u(uhFbst diff --git a/apps/mu.subx b/apps/mu.subx index f1fc3ed7..cbd9d473 100644 --- a/apps/mu.subx +++ b/apps/mu.subx @@ -4310,6 +4310,12 @@ test-reg-var-def-with-read-of-same-register: #? (write-stream 2 _test-output-stream) #? (write 2 "$\n") #? (rewind-stream _test-output-stream) +#? # }}} +#? # dump _test-error-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-error-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-error-stream) #? # }}} (check-stream-equal _test-error-stream "" "F - test-reg-var-def-with-read-of-same-register: error stream should be empty") # check output @@ -6315,7 +6321,7 @@ test-convert-array-of-user-defined-types: (write _test-input-stream "fn foo {\n") (write _test-input-stream " var arr/eax: (addr array t) <- copy 0\n") (write _test-input-stream " var idx/ecx: int <- copy 3\n") - (write _test-input-stream " var x/eax: (addr int) <- index arr, idx\n") + (write _test-input-stream " var x/eax: (addr t) <- index arr, idx\n") (write _test-input-stream "}\n") # convert (convert-mu _test-input-buffered-file _test-output-buffered-file Stderr 0) @@ -6606,6 +6612,826 @@ test-convert-length-of-array-of-user-defined-types: 5d/pop-to-ebp c3/return +test-index-with-non-array-atom-base-type: + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # setup + (clear-stream _test-input-stream) + (clear-stream $_test-input-buffered-file->buffer) + (clear-stream _test-output-stream) + (clear-stream $_test-output-buffered-file->buffer) + (clear-stream _test-error-stream) + (clear-stream $_test-error-buffered-file->buffer) + # var ed/edx: exit-descriptor = tailor-exit-descriptor(16) + 68/push 0/imm32 + 68/push 0/imm32 + 89/<- %edx 4/r32/esp + (tailor-exit-descriptor %edx 0x10) + # + (write _test-input-stream "fn foo {\n") + (write _test-input-stream " var a: int\n") + (write _test-input-stream " var c/ecx: (addr int) <- index a, 0\n") + (write _test-input-stream "}\n") + # convert + (convert-mu _test-input-buffered-file _test-output-buffered-file _test-error-buffered-file %edx) + # registers except esp clobbered at this point + # restore ed + 89/<- %edx 4/r32/esp + (flush _test-output-buffered-file) + (flush _test-error-buffered-file) +#? # dump _test-error-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-error-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-error-stream) +#? # }}} + # check output + (check-stream-equal _test-output-stream "" "F - test-index-with-non-array-atom-base-type: output should be empty") + (check-next-stream-line-equal _test-error-stream "fn foo: stmt index: var 'a' is not an array" "F - test-index-with-non-array-atom-base-type: error message") + # check that stop(1) was called + (check-ints-equal *(edx+4) 2 "F - test-index-with-non-array-atom-base-type: exit status") + # don't restore from ebp + 81 0/subop/add %esp 8/imm32 + # . epilogue + 5d/pop-to-ebp + c3/return + +test-index-with-non-array-compound-base-type: + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # setup + (clear-stream _test-input-stream) + (clear-stream $_test-input-buffered-file->buffer) + (clear-stream _test-output-stream) + (clear-stream $_test-output-buffered-file->buffer) + (clear-stream _test-error-stream) + (clear-stream $_test-error-buffered-file->buffer) + # var ed/edx: exit-descriptor = tailor-exit-descriptor(16) + 68/push 0/imm32 + 68/push 0/imm32 + 89/<- %edx 4/r32/esp + (tailor-exit-descriptor %edx 0x10) + # + (write _test-input-stream "fn foo {\n") + (write _test-input-stream " var a: (handle int)\n") + (write _test-input-stream " var c/ecx: (addr int) <- index a, 0\n") + (write _test-input-stream "}\n") + # convert + (convert-mu _test-input-buffered-file _test-output-buffered-file _test-error-buffered-file %edx) + # registers except esp clobbered at this point + # restore ed + 89/<- %edx 4/r32/esp + (flush _test-output-buffered-file) + (flush _test-error-buffered-file) +#? # dump _test-error-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-error-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-error-stream) +#? # }}} + # check output + (check-stream-equal _test-output-stream "" "F - test-index-with-non-array-compound-base-type: output should be empty") + (check-next-stream-line-equal _test-error-stream "fn foo: stmt index: var 'a' is not an array" "F - test-index-with-non-array-compound-base-type: error message") + # check that stop(1) was called + (check-ints-equal *(edx+4) 2 "F - test-index-with-non-array-compound-base-type: exit status") + # don't restore from ebp + 81 0/subop/add %esp 8/imm32 + # . epilogue + 5d/pop-to-ebp + c3/return + +test-index-with-non-array-compound-base-type-2: + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # setup + (clear-stream _test-input-stream) + (clear-stream $_test-input-buffered-file->buffer) + (clear-stream _test-output-stream) + (clear-stream $_test-output-buffered-file->buffer) + (clear-stream _test-error-stream) + (clear-stream $_test-error-buffered-file->buffer) + # var ed/edx: exit-descriptor = tailor-exit-descriptor(16) + 68/push 0/imm32 + 68/push 0/imm32 + 89/<- %edx 4/r32/esp + (tailor-exit-descriptor %edx 0x10) + # + (write _test-input-stream "fn foo {\n") + (write _test-input-stream " var a: (addr int)\n") + (write _test-input-stream " var c/ecx: (addr int) <- index a, 0\n") + (write _test-input-stream "}\n") + # convert + (convert-mu _test-input-buffered-file _test-output-buffered-file _test-error-buffered-file %edx) + # registers except esp clobbered at this point + # restore ed + 89/<- %edx 4/r32/esp + (flush _test-output-buffered-file) + (flush _test-error-buffered-file) +#? # dump _test-error-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-error-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-error-stream) +#? # }}} + # check output + (check-stream-equal _test-output-stream "" "F - test-index-with-non-array-compound-base-type-2: output should be empty") + (check-next-stream-line-equal _test-error-stream "fn foo: stmt index: var 'a' is not an array" "F - test-index-with-non-array-compound-base-type-2: error message") + # check that stop(1) was called + (check-ints-equal *(edx+4) 2 "F - test-index-with-non-array-compound-base-type-2: exit status") + # don't restore from ebp + 81 0/subop/add %esp 8/imm32 + # . epilogue + 5d/pop-to-ebp + c3/return + +test-index-with-array-atom-base-type: + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # setup + (clear-stream _test-input-stream) + (clear-stream $_test-input-buffered-file->buffer) + (clear-stream _test-output-stream) + (clear-stream $_test-output-buffered-file->buffer) + (clear-stream _test-error-stream) + (clear-stream $_test-error-buffered-file->buffer) + # var ed/edx: exit-descriptor = tailor-exit-descriptor(16) + 68/push 0/imm32 + 68/push 0/imm32 + 89/<- %edx 4/r32/esp + (tailor-exit-descriptor %edx 0x10) + # + (write _test-input-stream "fn foo {\n") + (write _test-input-stream " var a: array\n") + (write _test-input-stream " var c/ecx: (addr int) <- index a, 0\n") + (write _test-input-stream "}\n") + # convert + (convert-mu _test-input-buffered-file _test-output-buffered-file _test-error-buffered-file %edx) + # registers except esp clobbered at this point + # restore ed + 89/<- %edx 4/r32/esp + (flush _test-output-buffered-file) + (flush _test-error-buffered-file) +#? # dump _test-error-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-error-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-error-stream) +#? # }}} + # check output + (check-stream-equal _test-output-stream "" "F - test-index-with-array-atom-base-type: output should be empty") + (check-next-stream-line-equal _test-error-stream "fn foo: stmt index: array 'a' must specify the type of its elements" "F - test-index-with-array-atom-base-type: error message") + # check that stop(1) was called + (check-ints-equal *(edx+4) 2 "F - test-index-with-array-atom-base-type: exit status") + # don't restore from ebp + 81 0/subop/add %esp 8/imm32 + # . epilogue + 5d/pop-to-ebp + c3/return + +test-index-with-addr-base-on-stack: + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # setup + (clear-stream _test-input-stream) + (clear-stream $_test-input-buffered-file->buffer) + (clear-stream _test-output-stream) + (clear-stream $_test-output-buffered-file->buffer) + (clear-stream _test-error-stream) + (clear-stream $_test-error-buffered-file->buffer) + # var ed/edx: exit-descriptor = tailor-exit-descriptor(16) + 68/push 0/imm32 + 68/push 0/imm32 + 89/<- %edx 4/r32/esp + (tailor-exit-descriptor %edx 0x10) + # + (write _test-input-stream "fn foo {\n") + (write _test-input-stream " var a: (addr array int)\n") + (write _test-input-stream " var c/ecx: (addr int) <- index a, 0\n") + (write _test-input-stream "}\n") + # convert + (convert-mu _test-input-buffered-file _test-output-buffered-file _test-error-buffered-file %edx) + # registers except esp clobbered at this point + # restore ed + 89/<- %edx 4/r32/esp + (flush _test-output-buffered-file) + (flush _test-error-buffered-file) +#? # dump _test-error-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-error-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-error-stream) +#? # }}} + # check output + (check-stream-equal _test-output-stream "" "F - test-index-with-addr-base-on-stack: output should be empty") + (check-next-stream-line-equal _test-error-stream "fn foo: stmt index: var 'a' is an addr to an array, and so must live in a register" "F - test-index-with-addr-base-on-stack: error message") + # check that stop(1) was called + (check-ints-equal *(edx+4) 2 "F - test-index-with-addr-base-on-stack: exit status") + # don't restore from ebp + 81 0/subop/add %esp 8/imm32 + # . epilogue + 5d/pop-to-ebp + c3/return + +test-index-with-array-base-in-register: + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # setup + (clear-stream _test-input-stream) + (clear-stream $_test-input-buffered-file->buffer) + (clear-stream _test-output-stream) + (clear-stream $_test-output-buffered-file->buffer) + (clear-stream _test-error-stream) + (clear-stream $_test-error-buffered-file->buffer) + # var ed/edx: exit-descriptor = tailor-exit-descriptor(16) + 68/push 0/imm32 + 68/push 0/imm32 + 89/<- %edx 4/r32/esp + (tailor-exit-descriptor %edx 0x10) + # + (write _test-input-stream "fn foo {\n") + (write _test-input-stream " var a/eax: (array int 3) <- copy 0\n") + (write _test-input-stream " var c/ecx: (addr int) <- index a, 0\n") + (write _test-input-stream "}\n") + # convert + (convert-mu _test-input-buffered-file _test-output-buffered-file _test-error-buffered-file %edx) + # registers except esp clobbered at this point + # restore ed + 89/<- %edx 4/r32/esp + (flush _test-output-buffered-file) + (flush _test-error-buffered-file) +#? # dump _test-error-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-error-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-error-stream) +#? # }}} + # check output + (check-stream-equal _test-output-stream "" "F - test-index-with-array-base-in-register: output should be empty") + (check-next-stream-line-equal _test-error-stream "fn foo: stmt index: var 'a' is an array, and so must live on the stack" "F - test-index-with-array-base-in-register: error message") + # check that stop(1) was called + (check-ints-equal *(edx+4) 2 "F - test-index-with-array-base-in-register: exit status") + # don't restore from ebp + 81 0/subop/add %esp 8/imm32 + # . epilogue + 5d/pop-to-ebp + c3/return + +test-index-with-wrong-index-type: + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # setup + (clear-stream _test-input-stream) + (clear-stream $_test-input-buffered-file->buffer) + (clear-stream _test-output-stream) + (clear-stream $_test-output-buffered-file->buffer) + (clear-stream _test-error-stream) + (clear-stream $_test-error-buffered-file->buffer) + # var ed/edx: exit-descriptor = tailor-exit-descriptor(16) + 68/push 0/imm32 + 68/push 0/imm32 + 89/<- %edx 4/r32/esp + (tailor-exit-descriptor %edx 0x10) + # + (write _test-input-stream "fn foo {\n") + (write _test-input-stream " var a/eax: (addr array int) <- copy 0\n") + (write _test-input-stream " var b: boolean\n") + (write _test-input-stream " var c/ecx: (addr int) <- index a, b\n") + (write _test-input-stream "}\n") + # convert + (convert-mu _test-input-buffered-file _test-output-buffered-file _test-error-buffered-file %edx) + # registers except esp clobbered at this point + # restore ed + 89/<- %edx 4/r32/esp + (flush _test-output-buffered-file) + (flush _test-error-buffered-file) +#? # dump _test-error-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-error-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-error-stream) +#? # }}} + # check output + (check-stream-equal _test-output-stream "" "F - test-index-with-wrong-index-type: output should be empty") + (check-next-stream-line-equal _test-error-stream "fn foo: stmt index: second argument 'b' must be an int or offset" "F - test-index-with-wrong-index-type: error message") + # check that stop(1) was called + (check-ints-equal *(edx+4) 2 "F - test-index-with-wrong-index-type: exit status") + # don't restore from ebp + 81 0/subop/add %esp 8/imm32 + # . epilogue + 5d/pop-to-ebp + c3/return + +test-index-with-offset-atom-index-type: + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # setup + (clear-stream _test-input-stream) + (clear-stream $_test-input-buffered-file->buffer) + (clear-stream _test-output-stream) + (clear-stream $_test-output-buffered-file->buffer) + (clear-stream _test-error-stream) + (clear-stream $_test-error-buffered-file->buffer) + # var ed/edx: exit-descriptor = tailor-exit-descriptor(16) + 68/push 0/imm32 + 68/push 0/imm32 + 89/<- %edx 4/r32/esp + (tailor-exit-descriptor %edx 0x10) + # + (write _test-input-stream "fn foo {\n") + (write _test-input-stream " var a/eax: (addr array int) <- copy 0\n") + (write _test-input-stream " var b: offset\n") + (write _test-input-stream " var c/ecx: (addr int) <- index a, b\n") + (write _test-input-stream "}\n") + # convert + (convert-mu _test-input-buffered-file _test-output-buffered-file _test-error-buffered-file %edx) + # registers except esp clobbered at this point + # restore ed + 89/<- %edx 4/r32/esp + (flush _test-output-buffered-file) + (flush _test-error-buffered-file) +#? # dump _test-error-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-error-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-error-stream) +#? # }}} + # check output + (check-stream-equal _test-output-stream "" "F - test-index-with-offset-atom-index-type: output should be empty") + (check-next-stream-line-equal _test-error-stream "fn foo: stmt index: offset 'b' must specify the type of array elements" "F - test-index-with-offset-atom-index-type: error message") + # check that stop(1) was called + (check-ints-equal *(edx+4) 2 "F - test-index-with-offset-atom-index-type: exit status") + # don't restore from ebp + 81 0/subop/add %esp 8/imm32 + # . epilogue + 5d/pop-to-ebp + c3/return + +test-index-with-offset-on-stack: + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # setup + (clear-stream _test-input-stream) + (clear-stream $_test-input-buffered-file->buffer) + (clear-stream _test-output-stream) + (clear-stream $_test-output-buffered-file->buffer) + (clear-stream _test-error-stream) + (clear-stream $_test-error-buffered-file->buffer) + # var ed/edx: exit-descriptor = tailor-exit-descriptor(16) + 68/push 0/imm32 + 68/push 0/imm32 + 89/<- %edx 4/r32/esp + (tailor-exit-descriptor %edx 0x10) + # + (write _test-input-stream "fn foo {\n") + (write _test-input-stream " var a/eax: (addr array int) <- copy 0\n") + (write _test-input-stream " var b: int\n") + (write _test-input-stream " var c/ecx: (addr int) <- index a, b\n") + (write _test-input-stream "}\n") + # convert + (convert-mu _test-input-buffered-file _test-output-buffered-file _test-error-buffered-file %edx) + # registers except esp clobbered at this point + # restore ed + 89/<- %edx 4/r32/esp + (flush _test-output-buffered-file) + (flush _test-error-buffered-file) +#? # dump _test-error-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-error-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-error-stream) +#? # }}} + # check output + (check-stream-equal _test-output-stream "" "F - test-index-with-offset-on-stack: output should be empty") + (check-next-stream-line-equal _test-error-stream "fn foo: stmt index: second argument 'b' must be in a register" "F - test-index-with-offset-on-stack: error message") + # check that stop(1) was called + (check-ints-equal *(edx+4) 2 "F - test-index-with-offset-on-stack: exit status") + # don't restore from ebp + 81 0/subop/add %esp 8/imm32 + # . epilogue + 5d/pop-to-ebp + c3/return + +test-index-needs-offset-type: + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # setup + (clear-stream _test-input-stream) + (clear-stream $_test-input-buffered-file->buffer) + (clear-stream _test-output-stream) + (clear-stream $_test-output-buffered-file->buffer) + (clear-stream _test-error-stream) + (clear-stream $_test-error-buffered-file->buffer) + # var ed/edx: exit-descriptor = tailor-exit-descriptor(16) + 68/push 0/imm32 + 68/push 0/imm32 + 89/<- %edx 4/r32/esp + (tailor-exit-descriptor %edx 0x10) + # + (write _test-input-stream "fn foo {\n") + (write _test-input-stream " var a/eax: (addr array t) <- copy 0\n") + (write _test-input-stream " var b/ebx: int <- copy 0\n") + (write _test-input-stream " var c/ecx: (addr int) <- index a, b\n") + (write _test-input-stream "}\n") + (write _test-input-stream "type t {\n") # size 12 is not a power of two + (write _test-input-stream " x: int\n") + (write _test-input-stream " y: int\n") + (write _test-input-stream " z: int\n") + (write _test-input-stream "}\n") + # convert + (convert-mu _test-input-buffered-file _test-output-buffered-file _test-error-buffered-file %edx) + # registers except esp clobbered at this point + # restore ed + 89/<- %edx 4/r32/esp + (flush _test-output-buffered-file) + (flush _test-error-buffered-file) +#? # dump _test-error-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-error-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-error-stream) +#? # }}} + # check output + (check-stream-equal _test-output-stream "" "F - test-index-needs-offset-type: output should be empty") + (check-next-stream-line-equal _test-error-stream "fn foo: stmt index: cannot take an int for array 'a'; create an offset instead. See mu_summary for details." "F - test-index-needs-offset-type: error message") + # check that stop(1) was called + (check-ints-equal *(edx+4) 2 "F - test-index-needs-offset-type: exit status") + # don't restore from ebp + 81 0/subop/add %esp 8/imm32 + # . epilogue + 5d/pop-to-ebp + c3/return + +test-index-with-output-not-address: + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # setup + (clear-stream _test-input-stream) + (clear-stream $_test-input-buffered-file->buffer) + (clear-stream _test-output-stream) + (clear-stream $_test-output-buffered-file->buffer) + (clear-stream _test-error-stream) + (clear-stream $_test-error-buffered-file->buffer) + # var ed/edx: exit-descriptor = tailor-exit-descriptor(16) + 68/push 0/imm32 + 68/push 0/imm32 + 89/<- %edx 4/r32/esp + (tailor-exit-descriptor %edx 0x10) + # + (write _test-input-stream "fn foo {\n") + (write _test-input-stream " var a/ebx: (addr array boolean) <- copy 0\n") + (write _test-input-stream " var o/edi: int <- index a, 0\n") + (write _test-input-stream "}\n") + # convert + (convert-mu _test-input-buffered-file _test-output-buffered-file _test-error-buffered-file %edx) + # registers except esp clobbered at this point + # restore ed + 89/<- %edx 4/r32/esp + (flush _test-output-buffered-file) + (flush _test-error-buffered-file) +#? # dump _test-error-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-error-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-error-stream) +#? # }}} + # check output + (check-stream-equal _test-output-stream "" "F - test-index-with-output-not-address: output should be empty") + (check-next-stream-line-equal _test-error-stream "fn foo: stmt index: output 'o' must be an address" "F - test-index-with-output-not-address: error message") + # check that stop(1) was called + (check-ints-equal *(edx+4) 2 "F - test-index-with-output-not-address: exit status") + # don't restore from ebp + 81 0/subop/add %esp 8/imm32 + # . epilogue + 5d/pop-to-ebp + c3/return + +test-index-with-output-not-address-2: + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # setup + (clear-stream _test-input-stream) + (clear-stream $_test-input-buffered-file->buffer) + (clear-stream _test-output-stream) + (clear-stream $_test-output-buffered-file->buffer) + (clear-stream _test-error-stream) + (clear-stream $_test-error-buffered-file->buffer) + # var ed/edx: exit-descriptor = tailor-exit-descriptor(16) + 68/push 0/imm32 + 68/push 0/imm32 + 89/<- %edx 4/r32/esp + (tailor-exit-descriptor %edx 0x10) + # + (write _test-input-stream "fn foo {\n") + (write _test-input-stream " var a/ebx: (addr array boolean) <- copy 0\n") + (write _test-input-stream " var o/edi: (int) <- index a, 0\n") + (write _test-input-stream "}\n") + # convert + (convert-mu _test-input-buffered-file _test-output-buffered-file _test-error-buffered-file %edx) + # registers except esp clobbered at this point + # restore ed + 89/<- %edx 4/r32/esp + (flush _test-output-buffered-file) + (flush _test-error-buffered-file) +#? # dump _test-error-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-error-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-error-stream) +#? # }}} + # check output + (check-stream-equal _test-output-stream "" "F - test-index-with-output-not-address-2: output should be empty") + (check-next-stream-line-equal _test-error-stream "fn foo: stmt index: output 'o' must be an address" "F - test-index-with-output-not-address-2: error message") + # check that stop(1) was called + (check-ints-equal *(edx+4) 2 "F - test-index-with-output-not-address-2: exit status") + # don't restore from ebp + 81 0/subop/add %esp 8/imm32 + # . epilogue + 5d/pop-to-ebp + c3/return + +test-index-with-wrong-output-type: + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # setup + (clear-stream _test-input-stream) + (clear-stream $_test-input-buffered-file->buffer) + (clear-stream _test-output-stream) + (clear-stream $_test-output-buffered-file->buffer) + (clear-stream _test-error-stream) + (clear-stream $_test-error-buffered-file->buffer) + # var ed/edx: exit-descriptor = tailor-exit-descriptor(16) + 68/push 0/imm32 + 68/push 0/imm32 + 89/<- %edx 4/r32/esp + (tailor-exit-descriptor %edx 0x10) + # + (write _test-input-stream "fn foo {\n") + (write _test-input-stream " var a/ebx: (addr array boolean) <- copy 0\n") + (write _test-input-stream " var o/edi: (addr int) <- index a, 0\n") + (write _test-input-stream "}\n") + # convert + (convert-mu _test-input-buffered-file _test-output-buffered-file _test-error-buffered-file %edx) + # registers except esp clobbered at this point + # restore ed + 89/<- %edx 4/r32/esp + (flush _test-output-buffered-file) + (flush _test-error-buffered-file) +#? # dump _test-error-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-error-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-error-stream) +#? # }}} + # check output + (check-stream-equal _test-output-stream "" "F - test-index-with-wrong-output-type: output should be empty") + (check-next-stream-line-equal _test-error-stream "fn foo: stmt index: output 'o' does not have the right type" "F - test-index-with-wrong-output-type: error message") + # check that stop(1) was called + (check-ints-equal *(edx+4) 2 "F - test-index-with-wrong-output-type: exit status") + # don't restore from ebp + 81 0/subop/add %esp 8/imm32 + # . epilogue + 5d/pop-to-ebp + c3/return + +test-index-with-no-inouts: + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # setup + (clear-stream _test-input-stream) + (clear-stream $_test-input-buffered-file->buffer) + (clear-stream _test-output-stream) + (clear-stream $_test-output-buffered-file->buffer) + (clear-stream _test-error-stream) + (clear-stream $_test-error-buffered-file->buffer) + # var ed/edx: exit-descriptor = tailor-exit-descriptor(16) + 68/push 0/imm32 + 68/push 0/imm32 + 89/<- %edx 4/r32/esp + (tailor-exit-descriptor %edx 0x10) + # + (write _test-input-stream "fn foo {\n") + (write _test-input-stream " var c/ecx: (addr int) <- index\n") + (write _test-input-stream "}\n") + # convert + (convert-mu _test-input-buffered-file _test-output-buffered-file _test-error-buffered-file %edx) + # registers except esp clobbered at this point + # restore ed + 89/<- %edx 4/r32/esp + (flush _test-output-buffered-file) + (flush _test-error-buffered-file) +#? # dump _test-error-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-error-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-error-stream) +#? # }}} + # check output + (check-stream-equal _test-output-stream "" "F - test-index-with-no-inouts: output should be empty") + (check-next-stream-line-equal _test-error-stream "fn foo: stmt index: too few inouts (2 required)" "F - test-index-with-no-inouts: error message") + # check that stop(1) was called + (check-ints-equal *(edx+4) 2 "F - test-index-with-no-inouts: exit status") + # don't restore from ebp + 81 0/subop/add %esp 8/imm32 + # . epilogue + 5d/pop-to-ebp + c3/return + +test-index-with-too-few-inouts: + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # setup + (clear-stream _test-input-stream) + (clear-stream $_test-input-buffered-file->buffer) + (clear-stream _test-output-stream) + (clear-stream $_test-output-buffered-file->buffer) + (clear-stream _test-error-stream) + (clear-stream $_test-error-buffered-file->buffer) + # var ed/edx: exit-descriptor = tailor-exit-descriptor(16) + 68/push 0/imm32 + 68/push 0/imm32 + 89/<- %edx 4/r32/esp + (tailor-exit-descriptor %edx 0x10) + # + (write _test-input-stream "fn foo {\n") + (write _test-input-stream " var a: (array int 3)\n") + (write _test-input-stream " var c/ecx: (addr int) <- index a\n") + (write _test-input-stream "}\n") + # convert + (convert-mu _test-input-buffered-file _test-output-buffered-file _test-error-buffered-file %edx) + # registers except esp clobbered at this point + # restore ed + 89/<- %edx 4/r32/esp + (flush _test-output-buffered-file) + (flush _test-error-buffered-file) +#? # dump _test-error-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-error-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-error-stream) +#? # }}} + # check output + (check-stream-equal _test-output-stream "" "F - test-index-with-too-few-inouts: output should be empty") + (check-next-stream-line-equal _test-error-stream "fn foo: stmt index: too few inouts (2 required)" "F - test-index-with-too-few-inouts: error message") + # check that stop(1) was called + (check-ints-equal *(edx+4) 2 "F - test-index-with-too-few-inouts: exit status") + # don't restore from ebp + 81 0/subop/add %esp 8/imm32 + # . epilogue + 5d/pop-to-ebp + c3/return + +test-index-with-too-many-inouts: + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # setup + (clear-stream _test-input-stream) + (clear-stream $_test-input-buffered-file->buffer) + (clear-stream _test-output-stream) + (clear-stream $_test-output-buffered-file->buffer) + (clear-stream _test-error-stream) + (clear-stream $_test-error-buffered-file->buffer) + # var ed/edx: exit-descriptor = tailor-exit-descriptor(16) + 68/push 0/imm32 + 68/push 0/imm32 + 89/<- %edx 4/r32/esp + (tailor-exit-descriptor %edx 0x10) + # + (write _test-input-stream "fn foo {\n") + (write _test-input-stream " var a: (array int 3)\n") + (write _test-input-stream " var c/ecx: (addr int) <- index a, 0, 0\n") + (write _test-input-stream "}\n") + # convert + (convert-mu _test-input-buffered-file _test-output-buffered-file _test-error-buffered-file %edx) + # registers except esp clobbered at this point + # restore ed + 89/<- %edx 4/r32/esp + (flush _test-output-buffered-file) + (flush _test-error-buffered-file) +#? # dump _test-error-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-error-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-error-stream) +#? # }}} + # check output + (check-stream-equal _test-output-stream "" "F - test-index-with-too-many-inouts: output should be empty") + (check-next-stream-line-equal _test-error-stream "fn foo: stmt index: too many inouts (2 required)" "F - test-index-with-too-many-inouts: error message") + # check that stop(1) was called + (check-ints-equal *(edx+4) 2 "F - test-index-with-too-many-inouts: exit status") + # don't restore from ebp + 81 0/subop/add %esp 8/imm32 + # . epilogue + 5d/pop-to-ebp + c3/return + +test-index-with-no-output: + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # setup + (clear-stream _test-input-stream) + (clear-stream $_test-input-buffered-file->buffer) + (clear-stream _test-output-stream) + (clear-stream $_test-output-buffered-file->buffer) + (clear-stream _test-error-stream) + (clear-stream $_test-error-buffered-file->buffer) + # var ed/edx: exit-descriptor = tailor-exit-descriptor(16) + 68/push 0/imm32 + 68/push 0/imm32 + 89/<- %edx 4/r32/esp + (tailor-exit-descriptor %edx 0x10) + # + (write _test-input-stream "fn foo {\n") + (write _test-input-stream " var a: (array int 3)\n") + (write _test-input-stream " index a, 0\n") + (write _test-input-stream "}\n") + # convert + (convert-mu _test-input-buffered-file _test-output-buffered-file _test-error-buffered-file %edx) + # registers except esp clobbered at this point + # restore ed + 89/<- %edx 4/r32/esp + (flush _test-output-buffered-file) + (flush _test-error-buffered-file) +#? # dump _test-error-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-error-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-error-stream) +#? # }}} + # check output + (check-stream-equal _test-output-stream "" "F - test-index-with-no-output: output should be empty") + (check-next-stream-line-equal _test-error-stream "fn foo: stmt index: must have an output" "F - test-index-with-no-output: error message") + # check that stop(1) was called + (check-ints-equal *(edx+4) 2 "F - test-index-with-no-output: exit status") + # don't restore from ebp + 81 0/subop/add %esp 8/imm32 + # . epilogue + 5d/pop-to-ebp + c3/return + +test-index-with-too-many-outputs: + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # setup + (clear-stream _test-input-stream) + (clear-stream $_test-input-buffered-file->buffer) + (clear-stream _test-output-stream) + (clear-stream $_test-output-buffered-file->buffer) + (clear-stream _test-error-stream) + (clear-stream $_test-error-buffered-file->buffer) + # var ed/edx: exit-descriptor = tailor-exit-descriptor(16) + 68/push 0/imm32 + 68/push 0/imm32 + 89/<- %edx 4/r32/esp + (tailor-exit-descriptor %edx 0x10) + # + (write _test-input-stream "fn foo {\n") + (write _test-input-stream " var a: (array int 3)\n") + (write _test-input-stream " var b/eax: (addr int) <- copy 0\n") + (write _test-input-stream " var c/ecx: (addr int) <- copy 0\n") + (write _test-input-stream " b, c <- index a, 0\n") + (write _test-input-stream "}\n") + # convert + (convert-mu _test-input-buffered-file _test-output-buffered-file _test-error-buffered-file %edx) + # registers except esp clobbered at this point + # restore ed + 89/<- %edx 4/r32/esp + (flush _test-output-buffered-file) + (flush _test-error-buffered-file) +#? # dump _test-error-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-error-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-error-stream) +#? # }}} + # check output + (check-stream-equal _test-output-stream "" "F - test-index-with-too-many-outputs: output should be empty") + (check-next-stream-line-equal _test-error-stream "fn foo: stmt index: too many outputs (1 required)" "F - test-index-with-too-many-outputs: error message") + # check that stop(1) was called + (check-ints-equal *(edx+4) 2 "F - test-index-with-too-many-outputs: exit status") + # don't restore from ebp + 81 0/subop/add %esp 8/imm32 + # . epilogue + 5d/pop-to-ebp + c3/return + ####################################################### # Parsing ####################################################### @@ -12243,7 +13069,7 @@ $check-mu-get-stmt:check-base: $check-mu-get-stmt:base-is-compound: # if (type->left != addr) break (lookup *(ebx+4) *(ebx+8)) # Type-tree-left Type-tree-left => eax - (is-simple-mu-type? %eax 2) # => eax + (is-simple-mu-type? %eax 2) # addr => eax 3d/compare-eax-and 0/imm32/false 74/jump-if-= break/disp8 $check-mu-get-stmt:base-is-addr: @@ -12495,13 +13321,401 @@ check-mu-index-stmt: # stmt: (addr stmt), fn: (addr function), err: (addr buffe 55/push-ebp 89/<- %ebp 4/r32/esp # . save registers + 50/push-eax + 51/push-ecx + 52/push-edx + 53/push-ebx + 56/push-esi + 57/push-edi + # esi = stmt + 8b/-> *(ebp+8) 6/r32/esi + # - check for 0 inouts + # var base/ecx: (addr var) = stmt->inouts->value + (lookup *(esi+0xc) *(esi+0x10)) # Stmt1-inouts Stmt1-inouts => eax +$check-mu-index-stmt:check-no-inouts: + 3d/compare-eax-and 0/imm32 + 0f 84/jump-if-= $check-mu-index-stmt:error-too-few-inouts/disp32 + (lookup *eax *(eax+4)) # Stmt-var-value Stmt-var-value => eax + 89/<- %ecx 0/r32/eax + # - check base type is either (addr array ...) in register or (array ...) on stack + # var base-type/ebx: (addr type-tree) = lookup(base->type) + (lookup *(ecx+8) *(ecx+0xc)) # Var-type Var-type => eax + 89/<- %ebx 0/r32/eax + # if base-type is an atom, abort with a precise error + 81 7/subop/compare *ebx 0/imm32/false # Type-tree-is-atom + { + 74/jump-if-= break/disp8 + (is-simple-mu-type? %ebx 3) # array => eax + 3d/compare-eax-and 0/imm32/false + 0f 85/jump-if-!= $check-mu-index-stmt:error-base-array-atom-type/disp32 + 0f 84/jump-if-= $check-mu-index-stmt:error-base-non-array-type/disp32 + } +$check-mu-index-stmt:base-is-compound: + # if type->left not addr or array, abort + { + (lookup *(ebx+4) *(ebx+8)) # Type-tree-left Type-tree-left => eax + (is-simple-mu-type? %eax 2) # addr => eax + 3d/compare-eax-and 0/imm32/false + 75/jump-if-!= break/disp8 + (lookup *(ebx+4) *(ebx+8)) # Type-tree-left Type-tree-left => eax + (is-simple-mu-type? %eax 3) # array => eax + 3d/compare-eax-and 0/imm32/false + 75/jump-if-!= break/disp8 + e9/jump $check-mu-index-stmt:error-base-non-array-type/disp32 + } + # if (type->left == addr) ensure type->right->left == array and type->register exists + { + (lookup *(ebx+4) *(ebx+8)) # Type-tree-left Type-tree-left => eax + (is-simple-mu-type? %eax 2) # addr => eax + 3d/compare-eax-and 0/imm32/false + 74/jump-if-= break/disp8 +$check-mu-index-stmt:base-is-addr: + (lookup *(ebx+0xc) *(ebx+0x10)) # Type-tree-right Type-tree-right => eax + (lookup *(eax+4) *(eax+8)) # Type-tree-left Type-tree-left => eax + (is-simple-mu-type? %eax 3) # array => eax + 3d/compare-eax-and 0/imm32/false + 0f 84/jump-if-= $check-mu-index-stmt:error-base-non-array-type/disp32 +$check-mu-index-stmt:check-base-addr-is-register: + 81 7/subop/compare *(ecx+0x18) 0/imm32 # Var-register + 0f 84/jump-if-= $check-mu-index-stmt:error-base-address-array-type-on-stack/disp32 + } + # if (type->left == array) ensure type->register doesn't exist + { + (lookup *(ebx+4) *(ebx+8)) # Type-tree-left Type-tree-left => eax + (is-simple-mu-type? %eax 3) # array => eax + 3d/compare-eax-and 0/imm32/false + 74/jump-if-= break/disp8 +$check-mu-index-stmt:base-is-array: + 81 7/subop/compare *(ecx+0x18) 0/imm32 # Var-register + 0f 85/jump-if-!= $check-mu-index-stmt:error-base-array-type-in-register/disp32 + } + # - var base-type/ebx: type-id = payload type of base + # if (base-type->left == addr) base-type = base-type->right + { + (lookup *(ebx+4) *(ebx+8)) # Type-tree-left Type-tree-left => eax + (is-simple-mu-type? %eax 2) # addr => eax + 3d/compare-eax-and 0/imm32/false + 74/jump-if-= break/disp8 + (lookup *(ebx+0xc) *(ebx+0x10)) # Type-tree-right Type-tree-right => eax + 89/<- %ebx 0/r32/eax + } + # if (base-type->left == array) base-type = base-type->right + { + (lookup *(ebx+4) *(ebx+8)) # Type-tree-left Type-tree-left => eax + (is-simple-mu-type? %eax 3) # array => eax + 3d/compare-eax-and 0/imm32/false + 74/jump-if-= break/disp8 + (lookup *(ebx+0xc) *(ebx+0x10)) # Type-tree-right Type-tree-right => eax + 89/<- %ebx 0/r32/eax + } + # TODO: check !base-type->is-atom? + # base-type = base-type->left + (lookup *(ebx+4) *(ebx+8)) # Type-tree-left Type-tree-left => eax + 89/<- %ebx 0/r32/eax + # TODO: check base-type->is-atom? + # var base-type-id/ebx: type-id = base-type->value + 8b/-> *(ebx+4) 3/r32/ebx # Type-tree-value + # - check for 1 inout + # var index/ecx: (addr stmt-var) = stmt->inouts->next->value + (lookup *(esi+0xc) *(esi+0x10)) # Stmt1-inouts Stmt1-inouts => eax + (lookup *(eax+8) *(eax+0xc)) # Stmt-var-next Stmt-var-next => eax +$check-mu-index-stmt:check-single-inout: + 3d/compare-eax-and 0/imm32 + 0f 84/jump-if-= $check-mu-index-stmt:error-too-few-inouts/disp32 + (lookup *eax *(eax+4)) # Stmt-var-value Stmt-var-value => eax + 89/<- %ecx 0/r32/eax + # - check index is either a literal or register + # var index-type/edx: (addr type-tree) + (lookup *(ecx+8) *(ecx+0xc)) # Var-type Var-type => eax + 89/<- %edx 0/r32/eax + # if index type is an atom, it must be a literal or int + 81 7/subop/compare *edx 0/imm32/false # Type-tree-is-atom + { + 74/jump-if-= break/disp8 +$check-mu-index-stmt:index-type-is-atom: + (is-simple-mu-type? %edx 0) # literal => eax + 3d/compare-eax-and 0/imm32/false + 75/jump-if-!= $check-mu-index-stmt:index-type-done/disp8 + (is-simple-mu-type? %edx 1) # int => eax + 3d/compare-eax-and 0/imm32/false + 75/jump-if-!= $check-mu-index-stmt:index-type-done/disp8 + (is-simple-mu-type? %edx 7) # offset => eax + 3d/compare-eax-and 0/imm32/false + 0f 85/jump-if-!= $check-mu-index-stmt:error-index-offset-atom-type/disp32 + e9/jump $check-mu-index-stmt:error-invalid-index-type/disp32 + } + # if index type is a non-atom: it must be an offset + { + 75/jump-if-!= break/disp8 +$check-mu-index-stmt:index-type-is-non-atom: + (lookup *(edx+4) *(edx+8)) # Type-tree-left Type-tree-left => eax + (is-simple-mu-type? %eax 7) # offset => eax + 3d/compare-eax-and 0/imm32/false + 0f 84/jump-if-= $check-mu-index-stmt:error-invalid-index-type/disp32 + } +$check-mu-index-stmt:index-type-done: + # check index is either a literal or in a register + { + (is-simple-mu-type? %edx 0) # literal => eax + 3d/compare-eax-and 0/imm32/false + 75/jump-if-!= break/disp8 +$check-mu-index-stmt:check-index-in-register: + 81 7/subop/compare *(ecx+0x18) 0/imm32 # Var-register + 0f 84/jump-if-= $check-mu-index-stmt:error-index-on-stack/disp32 + } + # - if index is an 'int', check that element type of base has size 1, 2, 4 or 8 bytes. + { + (is-simple-mu-type? %edx 1) # int => eax + 3d/compare-eax-and 0/imm32/false + 74/jump-if-= break/disp8 +$check-mu-index-stmt:check-index-can-be-int: + (lookup *(esi+0xc) *(esi+0x10)) # Stmt1-inouts Stmt1-inouts => eax + (lookup *eax *(eax+4)) # Stmt-var-value Stmt-var-value => eax + (array-element-size %eax) # => eax + 3d/compare-eax-and 1/imm32 + 74/jump-if-= break/disp8 + 3d/compare-eax-and 2/imm32 + 74/jump-if-= break/disp8 + 3d/compare-eax-and 4/imm32 + 74/jump-if-= break/disp8 + 3d/compare-eax-and 8/imm32 + 74/jump-if-= break/disp8 + e9/jump $check-mu-index-stmt:error-index-needs-offset/disp32 + } + # - check for too many inouts + (lookup *(esi+0xc) *(esi+0x10)) # Stmt1-inouts Stmt1-inouts => eax + (lookup *(eax+8) *(eax+0xc)) # Stmt-var-next Stmt-var-next => eax + (lookup *(eax+8) *(eax+0xc)) # Stmt-var-next Stmt-var-next => eax + 3d/compare-eax-and 0/imm32/false + 0f 85/jump-if-!= $check-mu-index-stmt:error-too-many-inouts/disp32 + # - check for 0 outputs + # var output/edi: (addr var) = stmt->outputs->value + (lookup *(esi+0x14) *(esi+0x18)) # Stmt1-outputs Stmt1-outputs => eax + 3d/compare-eax-and 0/imm32/false + 0f 84/jump-if-= $check-mu-index-stmt:error-too-few-outputs/disp32 + (lookup *eax *(eax+4)) # Stmt-var-value Stmt-var-value => eax + 89/<- %edi 0/r32/eax + # - check output type + # must have a non-atomic type + (lookup *(edi+8) *(edi+0xc)) # Var-type Var-type => eax + 89/<- %edx 0/r32/eax + 81 7/subop/compare *edx 0/imm32/false # Type-tree-is-atom + 0f 85/jump-if-!= $check-mu-index-stmt:error-output-type-not-address/disp32 + # type must start with (addr ...) + (lookup *(edx+4) *(edx+8)) # Type-tree-left Type-tree-left => eax + (is-simple-mu-type? %eax 2) # addr => eax + 3d/compare-eax-and 0/imm32/false + 0f 84/jump-if-= $check-mu-index-stmt:error-output-type-not-address/disp32 + # var output-type-id/eax: type-id = output-type->right->left->value + (lookup *(edx+0xc) *(edx+0x10)) # Type-tree-right Type-tree-right => eax + (lookup *(eax+4) *(eax+8)) # Type-tree-left Type-tree-left => eax + # TODO: check output-type->is-atom? + # output-type-id must match base-type-id + 39/compare *(eax+4) 3/r32/ebx # Type-tree-value + 0f 85/jump-if-!= $check-mu-index-stmt:error-bad-output-type/disp32 + # - check for too many outputs + (lookup *(esi+0x14) *(esi+0x18)) # Stmt1-outputs Stmt1-outputs => eax + (lookup *(eax+8) *(eax+0xc)) # Stmt-var-next Stmt-var-next => eax + 3d/compare-eax-and 0/imm32/false + 0f 85/jump-if-!= $check-mu-index-stmt:error-too-many-outputs/disp32 $check-mu-index-stmt:end: # . restore registers + 5f/pop-to-edi + 5e/pop-to-esi + 5b/pop-to-ebx + 5a/pop-to-edx + 59/pop-to-ecx + 58/pop-to-eax # . epilogue 89/<- %esp 5/r32/ebp 5d/pop-to-ebp c3/return +$check-mu-index-stmt:error-base-non-array-type: + (write-buffered *(ebp+0x10) "fn ") + 8b/-> *(ebp+0xc) 0/r32/eax + (lookup *eax *(eax+4)) # Function-name Function-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) ": stmt index: var '") + (lookup *ecx *(ecx+4)) # Var-name Var-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) "' is not an array\n") + (flush *(ebp+0x10)) + (stop *(ebp+0x14) 1) + # never gets here + +$check-mu-index-stmt:error-base-array-atom-type: + (write-buffered *(ebp+0x10) "fn ") + 8b/-> *(ebp+0xc) 0/r32/eax + (lookup *eax *(eax+4)) # Function-name Function-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) ": stmt index: array '") + (lookup *ecx *(ecx+4)) # Var-name Var-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) "' must specify the type of its elements\n") + (flush *(ebp+0x10)) + (stop *(ebp+0x14) 1) + # never gets here + +$check-mu-index-stmt:error-base-address-array-type-on-stack: + (write-buffered *(ebp+0x10) "fn ") + 8b/-> *(ebp+0xc) 0/r32/eax + (lookup *eax *(eax+4)) # Function-name Function-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) ": stmt index: var '") + (lookup *ecx *(ecx+4)) # Var-name Var-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) "' is an addr to an array, and so must live in a register\n") + (flush *(ebp+0x10)) + (stop *(ebp+0x14) 1) + # never gets here + +$check-mu-index-stmt:error-base-array-type-in-register: + (write-buffered *(ebp+0x10) "fn ") + 8b/-> *(ebp+0xc) 0/r32/eax + (lookup *eax *(eax+4)) # Function-name Function-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) ": stmt index: var '") + (lookup *ecx *(ecx+4)) # Var-name Var-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) "' is an array, and so must live on the stack\n") + (flush *(ebp+0x10)) + (stop *(ebp+0x14) 1) + # never gets here + +$check-mu-index-stmt:error-too-few-inouts: + (write-buffered *(ebp+0x10) "fn ") + 8b/-> *(ebp+0xc) 0/r32/eax + (lookup *eax *(eax+4)) # Function-name Function-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) ": stmt index: too few inouts (2 required)\n") + (flush *(ebp+0x10)) + (stop *(ebp+0x14) 1) + # never gets here + +$check-mu-index-stmt:error-invalid-index-type: + (write-buffered *(ebp+0x10) "fn ") + 8b/-> *(ebp+0xc) 0/r32/eax + (lookup *eax *(eax+4)) # Function-name Function-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) ": stmt index: second argument '") + (lookup *ecx *(ecx+4)) # Var-name Var-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) "' must be an int or offset\n") + (flush *(ebp+0x10)) + (stop *(ebp+0x14) 1) + # never gets here + +$check-mu-index-stmt:error-index-offset-atom-type: + (write-buffered *(ebp+0x10) "fn ") + 8b/-> *(ebp+0xc) 0/r32/eax + (lookup *eax *(eax+4)) # Function-name Function-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) ": stmt index: offset '") + (lookup *ecx *(ecx+4)) # Var-name Var-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) "' must specify the type of array elements\n") + (flush *(ebp+0x10)) + (stop *(ebp+0x14) 1) + # never gets here + +$check-mu-index-stmt:error-index-on-stack: + (write-buffered *(ebp+0x10) "fn ") + 8b/-> *(ebp+0xc) 0/r32/eax + (lookup *eax *(eax+4)) # Function-name Function-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) ": stmt index: second argument '") + (lookup *ecx *(ecx+4)) # Var-name Var-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) "' must be in a register\n") + (flush *(ebp+0x10)) + (stop *(ebp+0x14) 1) + # never gets here + +$check-mu-index-stmt:error-index-needs-offset: + (write-buffered *(ebp+0x10) "fn ") + 8b/-> *(ebp+0xc) 0/r32/eax + (lookup *eax *(eax+4)) # Function-name Function-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) ": stmt index: cannot take an int for array '") + (lookup *(esi+0xc) *(esi+0x10)) # Stmt1-inouts Stmt1-inouts => eax + (lookup *eax *(eax+4)) # Stmt-var-value Stmt-var-value => eax + (lookup *eax *(eax+4)) # Var-name Var-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) "'; create an offset instead. See mu_summary for details.\n") + (flush *(ebp+0x10)) + (stop *(ebp+0x14) 1) + # never gets here + +$check-mu-index-stmt:error-too-many-inouts: + (write-buffered *(ebp+0x10) "fn ") + 8b/-> *(ebp+0xc) 0/r32/eax + (lookup *eax *(eax+4)) # Function-name Function-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) ": stmt index: too many inouts (2 required)\n") + (flush *(ebp+0x10)) + (stop *(ebp+0x14) 1) + # never gets here + +$check-mu-index-stmt:error-too-few-outputs: + (write-buffered *(ebp+0x10) "fn ") + 8b/-> *(ebp+0xc) 0/r32/eax + (lookup *eax *(eax+4)) # Function-name Function-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) ": stmt index: must have an output\n") + (flush *(ebp+0x10)) + (stop *(ebp+0x14) 1) + # never gets here + +$check-mu-index-stmt:error-too-many-outputs: + (write-buffered *(ebp+0x10) "fn ") + 8b/-> *(ebp+0xc) 0/r32/eax + (lookup *eax *(eax+4)) # Function-name Function-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) ": stmt index: too many outputs (1 required)\n") + (flush *(ebp+0x10)) + (stop *(ebp+0x14) 1) + # never gets here + +$check-mu-index-stmt:error-output-not-in-register: + (write-buffered *(ebp+0x10) "fn ") + 8b/-> *(ebp+0xc) 0/r32/eax + (lookup *eax *(eax+4)) # Function-name Function-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) ": stmt index: output '") + (lookup *edi *(edi+4)) # Var-name Var-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) "' is not in a register\n") + (flush *(ebp+0x10)) + (stop *(ebp+0x14) 1) + # never gets here + +$check-mu-index-stmt:error-output-type-not-address: + (write-buffered *(ebp+0x10) "fn ") + 8b/-> *(ebp+0xc) 0/r32/eax + (lookup *eax *(eax+4)) # Function-name Function-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) ": stmt index: output '") + (lookup *edi *(edi+4)) # Var-name Var-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) "' must be an address\n") + (flush *(ebp+0x10)) + (stop *(ebp+0x14) 1) + # never gets here + +$check-mu-index-stmt:error-bad-output-type: + (write-buffered *(ebp+0x10) "fn ") + 8b/-> *(ebp+0xc) 0/r32/eax + (lookup *eax *(eax+4)) # Function-name Function-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) ": stmt index: output '") + (lookup *edi *(edi+4)) # Var-name Var-name => eax + (write-buffered *(ebp+0x10) %eax) + (write-buffered *(ebp+0x10) "' does not have the right type\n") + (flush *(ebp+0x10)) + (stop *(ebp+0x14) 1) + # never gets here + check-mu-length-stmt: # stmt: (addr stmt), fn: (addr function), err: (addr buffered-file), ed: (addr exit-descriptor) # . prologue 55/push-ebp diff --git a/apps/pack b/apps/pack index c68ccf731deb4ad9bb5c8f9fde4e10285722cee8..d831afbb25ab7f67a0d9386326815464251fa6ee 100755 GIT binary patch delta 16 YcmZ3!mwEYK<_&FA8QC_sPgU>)06&2S*#H0l delta 16 YcmZ3!mwEYK<_&FA8JRb?PgU>)06%XA)&Kwi diff --git a/apps/sigils b/apps/sigils index 941fd4ac40783966b22389104cc9c4d2f7d3b579..7fe34f2871626c8ad3b34b194bfcd647ce5f8789 100755 GIT binary patch delta 16 YcmbPpih0f{<_%}2F|utwJI&t@07IPzp8x;= delta 16 YcmbPpih0f{<_%}2F*0vHJI&t@07HuhoB#j- diff --git a/apps/subx-params.subx b/apps/subx-params.subx index 7df79ea0..a66e9b2e 100644 --- a/apps/subx-params.subx +++ b/apps/subx-params.subx @@ -12,7 +12,7 @@ Input-size: # number of labels we can translate to addresses Max-labels: - 0x30000/imm32/24K-labels/192KB + 0x60000/imm32/24K-labels/192KB # capacity of trace-stream Trace-size: diff --git a/apps/survey b/apps/survey index 94b0e03fdb4bd2c3791386ecd13b502e70ff70e5..8989971f9f4a5de9d38465e9531e29615de59a23 100755 GIT binary patch delta 16 Ycmcbxg89M<<_($sjBJ~;`k%P~071J4d;kCd delta 16 Ycmcbxg89M<<_($sjLe&}`k%P~070n-c>n+a diff --git a/apps/tests b/apps/tests index e6874d3aaf7c8cd4827852a0767c8807849cf028..0b826bffc32041f3b05884b0d0e92320c2771b3f 100755 GIT binary patch delta 16 YcmdmSk!i<8rVUGq8QC^3EfzKf07Fv-_y7O^ delta 16 YcmdmSk!i<8rVUGq8JRaPEfzKf07F3r^#A|>