From 381d80f8a4dc52849564eba1b9245118bc1d84e1 Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Tue, 4 Dec 2018 08:18:07 -0800 Subject: [PATCH] 4834 Fix CI since 4827. --- html/subx/056write.subx.html | 137 ++++++++++++++++------------------- subx/056write.subx | 9 --- subx/apps/crenshaw2-1 | Bin 7038 -> 6980 bytes subx/apps/crenshaw2-1b | Bin 7599 -> 7541 bytes subx/apps/factorial | Bin 5929 -> 5871 bytes 5 files changed, 64 insertions(+), 82 deletions(-) diff --git a/html/subx/056write.subx.html b/html/subx/056write.subx.html index 727bda6b..442c7eff 100644 --- a/html/subx/056write.subx.html +++ b/html/subx/056write.subx.html @@ -201,80 +201,71 @@ if ('onhashchange' in window) { 136 e8/call write/disp32 137 # . . discard args 138 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP -139 # check-ints-equal(EAX, 2, msg) +139 # check-ints-equal(*_test-stream->data, 41/A 62/b 00 00, msg) 140 # . . push args -141 68/push "F - test-read-single: return EAX"/imm32 -142 68/push 2/imm32 -143 50/push-EAX -144 # . . call -145 e8/call check-ints-equal/disp32 -146 # . . discard args -147 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32 # add to ESP -148 # check-ints-equal(*_test-stream->data, 41/A 62/b 00 00, msg) -149 # . . push args -150 68/push "F - test-write-single"/imm32 -151 68/push 0x006241/imm32/Ab -152 # . . push *_test-stream->data -153 b8/copy-to-EAX _test-stream/imm32 -154 ff 6/subop/push 1/mod/*+disp8 0/rm32/EAX . . . . 0xc/disp8 . # push *(EAX+12) -155 # . . call -156 e8/call check-ints-equal/disp32 -157 # . . discard args -158 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32 # add to ESP -159 # end -160 c3/return -161 -162 test-write-appends: -163 # clear-stream(_test-stream) -164 # . . push args -165 68/push _test-stream/imm32 -166 # . . call -167 e8/call clear-stream/disp32 -168 # . . discard args -169 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP -170 # write(_test-stream, "C") -171 # . . push args -172 68/push "C"/imm32 -173 68/push _test-stream/imm32 -174 # . . call -175 e8/call write/disp32 -176 # . . discard args -177 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP -178 # write(_test-stream, "D") -179 # . . push args -180 68/push "D"/imm32 -181 68/push _test-stream/imm32 -182 # . . call -183 e8/call write/disp32 -184 # . . discard args -185 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP -186 # check-ints-equal(*_test-stream->data, 43/C 44/D 00 00, msg) -187 # . . push args -188 68/push "F - test-write-appends"/imm32 -189 68/push 0x00004443/imm32/C-D -190 # . . push *_test-stream->data -191 b8/copy-to-EAX _test-stream/imm32 -192 ff 6/subop/push 1/mod/*+disp8 0/rm32/EAX . . . . 0xc/disp8 . # push *(EAX+12) -193 # . . call -194 e8/call check-ints-equal/disp32 -195 # . . discard args -196 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32 # add to ESP -197 # end -198 c3/return -199 -200 == data -201 -202 _test-stream: -203 # current write index -204 00 00 00 00 -205 # current read index -206 00 00 00 00 -207 # length (= 8) -208 08 00 00 00 -209 # data -210 00 00 00 00 00 00 00 00 # 8 bytes -211 -212 # . . vim:nowrap:textwidth=0 +141 68/push "F - test-write-single"/imm32 +142 68/push 0x006241/imm32/Ab +143 # . . push *_test-stream->data +144 b8/copy-to-EAX _test-stream/imm32 +145 ff 6/subop/push 1/mod/*+disp8 0/rm32/EAX . . . . 0xc/disp8 . # push *(EAX+12) +146 # . . call +147 e8/call check-ints-equal/disp32 +148 # . . discard args +149 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32 # add to ESP +150 # end +151 c3/return +152 +153 test-write-appends: +154 # clear-stream(_test-stream) +155 # . . push args +156 68/push _test-stream/imm32 +157 # . . call +158 e8/call clear-stream/disp32 +159 # . . discard args +160 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP +161 # write(_test-stream, "C") +162 # . . push args +163 68/push "C"/imm32 +164 68/push _test-stream/imm32 +165 # . . call +166 e8/call write/disp32 +167 # . . discard args +168 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP +169 # write(_test-stream, "D") +170 # . . push args +171 68/push "D"/imm32 +172 68/push _test-stream/imm32 +173 # . . call +174 e8/call write/disp32 +175 # . . discard args +176 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP +177 # check-ints-equal(*_test-stream->data, 43/C 44/D 00 00, msg) +178 # . . push args +179 68/push "F - test-write-appends"/imm32 +180 68/push 0x00004443/imm32/C-D +181 # . . push *_test-stream->data +182 b8/copy-to-EAX _test-stream/imm32 +183 ff 6/subop/push 1/mod/*+disp8 0/rm32/EAX . . . . 0xc/disp8 . # push *(EAX+12) +184 # . . call +185 e8/call check-ints-equal/disp32 +186 # . . discard args +187 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32 # add to ESP +188 # end +189 c3/return +190 +191 == data +192 +193 _test-stream: +194 # current write index +195 00 00 00 00 +196 # current read index +197 00 00 00 00 +198 # length (= 8) +199 08 00 00 00 +200 # data +201 00 00 00 00 00 00 00 00 # 8 bytes +202 +203 # . . vim:nowrap:textwidth=0 diff --git a/subx/056write.subx b/subx/056write.subx index c76d0737..64856f97 100644 --- a/subx/056write.subx +++ b/subx/056write.subx @@ -136,15 +136,6 @@ test-write-single: e8/call write/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP - # check-ints-equal(EAX, 2, msg) - # . . push args - 68/push "F - test-read-single: return EAX"/imm32 - 68/push 2/imm32 - 50/push-EAX - # . . call - e8/call check-ints-equal/disp32 - # . . discard args - 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32 # add to ESP # check-ints-equal(*_test-stream->data, 41/A 62/b 00 00, msg) # . . push args 68/push "F - test-write-single"/imm32 diff --git a/subx/apps/crenshaw2-1 b/subx/apps/crenshaw2-1 index 744fdc5977d5ac37de920e0477e7c87411bd865a..5092e428e2bcc626e44ad12e9a8592462d9c174f 100755 GIT binary patch delta 2864 zcmZuzeN2^Q6n|g1A8@@OmygQ@L=k~(0YXk@AD9=ejg0cvj7=Q!;mUWc1eP?H+V!Ti z-7#DGRDT3Z*OpC-p<>(JSo06A#Tv9+=H@VGe^Bq1qY@+5hqrUibMJHB8Ep5w_c_n+ z`JLbSc;3ssx>(&iflxF@)9_>0;4e$lba+(e(#Hi)m(Qtb_;DomBeUUy<%D`;tx=e# zx#IiE)66KG49C&{Q;!7w8RlQvnl@PM1;8)s!nbkfn62z9B+-IK3RnYyhCX~ewp%Y1 zYxOnHc_f?L>|T~+GwPDQ7WOGz1N&N%xN7!!#IRoM!z9etAYwRXgNXI;(fWNxkGP^& z>#v_kS)o^o;*?U)B;uxANnG@(2&Uv!)S&mY@)`kLzt8Ja5Z9O#gDDS&j^b7uWF-Ry z32PvML0dQO#pB@^6iPEb##8IzTNJnBy>8P(1$2W;ma%Q(g~+Tynrtds6nX5JMbMl} zPX?k8=FJLrkjQU%Jw+l>-kx-EJjJ(lFZ4sk`Jc)%R(S=FVXNZ3Hgnf$BM1Pk_gMpDm&S)VESJM7((-wy*TPXhmpy>L76zkDD65Uo*#QG@(` z)RW|&fmCI_6XtG+C1*K`LpyyKd-JS#%2A8^efCulx_Bq3LH{_79i6^c{$K! zYPYPpLQXA(9Aabyk&OY1q?uKstXZ5qZ?zX z>lvbvnxQp`nXNpDeRq zyzO4&oP{66L`(H|#dY@s`Z1wrY?DnL=Xv{EN#4%=(tXL!BwsfN=n7k^u%9Uk5luJ6 z!xXEO^B+#I%$E*Oc{9aaMuF}XX_+hZ8=^cj0I#a<%#P44?7BtYCgdS!6O#v|K9?57 z9h{tex@=M(p)LB_6os8Bx|H)b*0;ykjQU&wmmV4nOPOwk=MZ_b06Mf2@lFjaqm`2bC50n8$r cfj_}CFM{b2^EsdBlVd}<2UEu$^EIaa2cc(Pr2qf` literal 7038 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 literal 7599 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 G*Z%;Ey0+;6 diff --git a/subx/apps/factorial b/subx/apps/factorial index 5eed1795ae3a0fae068a72f76d9da17fb85f6136..ae38f80adbefae21a4d097d34e5ecf5eb3addc75 100755 GIT binary patch delta 2435 zcmZuyT})g>6ux(N@BXpN?m}5oNs(F!O@%F0N%|lOgl*D@#;sYZv{poudSfu9u_PpD z7vk@VCN^WL4WTtOX+mfPA?hYII>;)ul?gc#7JN*&)Ir&iht)PYcTRbo2 zh`&8hsw^Org-RLufX>?OkWeCh{}UafF&5Y>D2hlex&nHoMZEw9Kol?qY{c?#SANz0 z+f0anx858VP2T!|sUV`;yWjj;%y>JLyUVZx>+8A$eV2j*mu~u=Qhj)h_#nV3;9YuAXYDQ|q=g%lq;AmBIKsPh5J9+08ClD6s;owH zxfLwmVcmy8Epghb`#=&=mZ0%nS}3};k7E(E9wg6)^a_>aB+(!Yj&`%ZDn-RJTs)4& z!0lvY4;RZ{;BV|sx3^9Re~WoReB*CZeVX@ZyKT@XInCpFZGSH%sY3`-W_HmUD7lD8 zz<}poNT^e6U%@P$A}qptmDZC*JDWqfc9tXgT|71`OG-;{2i8v!%g^!I@N48J8zJ+I zEJGxnqP9d%d77n*OLtwZYnnJ{FUZmv9>|yEhWr%0lcj!pRhtLzkdUj|AW=S-R~D zU;(%1Wbl>prxAm#bozaAQdEcTkLOBdHi#N>Ky-$-1y=GvNL}cV17j_NPHxQd*>}^ac-pvXt ziqXcpVQ6E%!*>zig#$3ZJbW;}cBm+O0feV3R(>?sSOv8oyNQq!JIguv3^mg}e_jc9wa6fD*VN!YQ|Ms~Q_%>>Bfarmzr;_Pxmx?+S0vHcToH zZ@RGiHFlb@&oH)IVQYx^ga*IP;8WssEa_QJiZ5aqpleM|S=Oq3(AGZ{L7$6~pD55FY#k!Wj&2+=6fy!@GY%*!LHNV`3^kWM=0Y S5@Q~-N^GsDoV#7Q)B7(Ez}->+ delta 2406 zcmZuxZA@EL7`~Ubl$MrKSg9FoGWqZ;MHWY*aWm9*aoLPEeqg|`2|w_r>bAxaXP7I@ z1k*Ipnd68FnNIf$znJ#VO;|?4$D(fh(#2%cpUm@Pi9-=T7QDXid)o7M2Eu)B&wHNt zdESq6?ys?_j+4m)&Nc$@J02j1}b@p+)qFz|tY+RrVI9cv@h@q4WEVZ-kn zX{(a?pka(HQ~_ic5)23BQphm!9{ats16vmWWgP`~N?xo%TmXL0%O?@B#TIv&`EVK_ zvJv9P7TmCDw~Gtr=H2b+-RC%tqPA!~4EqXYT}9%~0l;Itb2uO`Q67r_8PG!hEfwi3 z@yETTNE?|vsFafTYp)dthZ1?^f1;DL#sF&tMG>h*S3s{+)EkfhhyupOMl6j!ms_?% zW}Wc5+RTE8x!Sx@1rfcj9`h%0&XrKvU4aP{>#Borxyb9ybs$O3{p7?x)7qlCVw`L< zBIAQ)$&FX*INN+Lp-Gnf^bSHxr60YSfl1D zSMa!pbRXW)5+AyBA4np|60}~YLNQzGeGG!ugXEk~SEwYXhz4PBv^y&!9Ta?yg9{i8 z+)hdkbFf^8-`JgASF;e6UFN*_wz6CGX|_VA+k@w2n%7r!`g_Pp9YT;wW;@kD&TEJS z4CMSeIMgY&9Q4vD!XUg?eR^}=N@r0n&T=Hbo!8O&lG1l@2a2bNSmrdT1k|Z7jrj2H2UzaOe`W>1i)~B}=#c zDx`qpnW%cL<{)CQmCj+eoE1@DYwf90m<6JS%!_@#7VjcbjL$1>aL@ zs55-L&g+z)<$2AOL{jnty2n_)bsfF8-TD!|3G>2n4KlH#iEnX*?uR!42SKm1*N4vA z?rsYc%g^99Rx<5xGLMVP{v>?h!qqQ!okf!*8DbkyKzyYnqY<31lOk3E2 zy@%dLY#xmKnsay;ojA{wJWXd_>CB*e4zc5my@*bvP036db`9O@i0xynJ0dc{NVGiy zdoeJwgZFks#OdJ9<_V}TmvGPE+wKF}rO_91H~Q!00FdJ({tjjuhLGS(96_E5(qgox zA^VBmI>1{~=u|oS=x(TbmeDY^)6Hjfyj&u8P*E_%U=}v;alXMU`6# zQw7%X*y4`b?p