From 390dd10dcaad0b6f7dab6c539f1697b07f632ed1 Mon Sep 17 00:00:00 2001 From: victor Date: Tue, 13 May 2025 21:44:49 +0200 Subject: [PATCH] added simple string_builder --- Makefile | 2 +- langc | Bin 38720 -> 38904 bytes lib/core.a | Bin 107354 -> 109716 bytes .../string_builder/{sappend.s => sb_append.s} | 34 ++++++++++-------- src/core/string_builder/string_builder.s | 5 ++- src/start.s | 24 +++++++++---- 6 files changed, 41 insertions(+), 24 deletions(-) rename src/core/string_builder/{sappend.s => sb_append.s} (71%) diff --git a/Makefile b/Makefile index 706a415..d53f989 100644 --- a/Makefile +++ b/Makefile @@ -120,7 +120,7 @@ GLOBALSRC := $(addprefix $(GLOBALDIR)/, $(addsuffix .s, \ )) SBSRC := $(addprefix $(SBDIR)/, $(addsuffix .s, \ - string_builder\ + string_builder sb_append \ )) # Collect all sources and objects diff --git a/langc b/langc index 38f77c99699e309ae0059c89628dba3b2f997399..979738284a6ebc667af1dccda49a498ca6214e9d 100755 GIT binary patch literal 38904 zcmeHwdtg-6wfC7!fEa-U-_%zopwlukC&wzcC{|DyRFHmJ)~4H3l(CtX*9uzs z)=7#sH;;78tX@m<7fxFlK=<3yfJ{%mQN;7_-2b1;#A!|D^@&K3PFK)mX>N1cm7WAD8Au>IIMyx?{&@p9TEN=qDCZI=x>%TK}=Ip?cO<0ar!$*A6QCQ*-I+dxxtxN z7WABgyec}GqVd1jLj%O^w|3%%dV8pUU}?p&isi2A3Fx_JXlUpsd5~czK-zB~`CaV_ zJ8{6d33^>0wR?|R@h1B~?hB-aov1u)C-&OC?_2R@P6#=x5f&ds68ow>Pp(+}7;$kvk4NPC@J=h7@Yub3^X#D~1|PA@ z`UfX3cCMl{8+a0;diNEQnJQLStg0WlcI%uxD}L{_Gq23+xvOeuZ`IJx2M1FI+O>4C z^OJv&M(@$Qv(#Jn)TwAcWUj#E6#-z zP#xR*3%30V8&lEi6W8a?PfWHG*X2>6CV}L@_2IZ28l zYr=`AobN)W5?)II)Mv8iu$|nHmt6jVa|0x^JJycn)VB7$Cir}qt zrrU`>JVdRbj~>p;s_yp{4md;a!`_Miv=jf(Df_7MoY(Q}%O}c5D4sGtwGZcH;-gZ( zL8;0a454!lhB<1NJ@YUn+eh9ok834{9xHmfZ zt9rBuL!Mh7iJKkgdDJU;3)BI4JJr~rq()q@?LA5$H<7&AQN8^k$grHB5KIKy-=q){ z?d0;KWN~L3fc?4Sl~wJ;;Q{GC+E=Vl{0`JOH$z1`u|MjB6>@lhJXtu|To~Tjkqd2` zD`r<)abHz(&h*7jKbk~D^{SK5fUDp~247KCfu2#;-&`?NX^~TrHdY9?SY7s-os1&+ z@x_tZ1@X)G6p?X`{LbE)>$Q_LRHfvh?PRdfp7qQ4OLp%}Pmi~1Xde>n-u}YDH|8gr zbK$5|>kwmU#^@u?=al|8J7~DD&%px=Pz=-`ZR*-b{zyj5qk<_T{#Xwbj-6OgNUa@) zT9Bu#O4=n?AD#7L!M0nF(^WFL`tS&fKD|U~y2wthhRy2>;T&sf7wa16%&S=J{0P3T zB0}xDNm9O^PqI6Yo0@DyzNXyadGVTO|ZfQWOs5*Lc?t ztf+N%gD&d4f?kzIbr({j&I5Q3)UI$gE0WJ6mPXR6NNz+vB8e!Hj!cpp6v_39#JO5g zY|NBXt}@(xc@XA7TdzcPpw^iPQoGMZr)F}^S6uVJsBcv}GQ9)`Fi>mv{v$V@GdRI{ z3zafB&Upc^G#<~Amq=M*KcZ3Rxy+nD);YhCne(feIX|Ov?tr#Xv^SHqGn2GIkw!JC z4brHy36V54=Bf;CL9as;TxTfK>P*tpGD*+Yq=ZIM_`YRQzlYuWh z2GJ}4nQweS)%UG}T};>(g?&@7(+OJ#jP&c9rMZf~>qFGqGf{)o_`}KE3m!q%D)@w+ z)1BWCuSD(z`vB3KlI-4r33l(R@DFoz-17=^uxA~`WRS@)j#eyN>ipsznhNey*+xJjP`>{4D?~cD|mht)a zW1Rx_2sqPztX;qx1iZ}oCz?&bb;d8Lbr{kH6d1LQTPP`OPPy8x8$HnK^eT%sWg9u+O;ZnPAzJ#aSeIJ$ZS$1EEgeTg4 z*Gt%P8jhsdoJQh`6-%oUe#j_r$a7u-5>EV%n$lv!>U?ZgvR$<05vock1~7fB`bv?oZ77u^vVEU#vk1>0UDA4Rhwnm}M2p7mn< zYLzWH=ZVF&jt`8YHO@>7i_u685)Qj;F#EuaVkOo=o7AkbKaIudnUr(9q`~j6r?EXz z&I_m_Hb~GyuR!nrqF8hHU#YDoH|D816sn~J-3U#~oqvh_;EHZO+80FWowZa9)#pw{ zs0L=!eo`gQL1|Yi!(tsw{mi+Ex+qQc5(_YmKAf1~yiWZFi1R4Tbr48y$#pKI$zu`~ zveQ0GVOP&8i=VyN`6n7>xA*s)ta1d=b$YDGkZ15E=QQLS$W|grsPMQ(@+vUpTaCY)rWS$IETbIZSWpZXEUC9__!ZF5b3{? z^sq{&CZp4LA)W12xTMxui-sGmgL&-4b56ris(Z+StMtS%8+$J&9>&ufACG5l938jZ z6F(i#ocQ^v4(EJ^T0hn&&YcM8$?F^x?30)XKIc4xP7_rl*x*IT=~el2<7cEgwG*an z%HNFJL;iR zP@@|lxyP{&R2~Fps>Z{$&fOHkI&ll4aIA`~P-(q}DnC*A0@108Np8tYo64N0T%}6e zSV(QUcW;ipb3>6myV{ALw|E7X2M39#vmbn}2cv^_@BTupQT7i02KWn3Cm1Nrm2K7H zT7}&8x73IBNzklsi_FmOq>f9nAN#gIFQGfweV>u&I!$rZ*+hZ9+XZi>C{^Yt+$)E3 zzax|TB;o#%OztNOce^i7Bp&&TG_p%k=Sv@^@q+9H7jo%hH6y3iU2xxCJ9&RIGCBJ& z*Flv;^ghz_y5)G)2+m5wCs1W&t7EjTtGhwc~*{uDZ*V zHr=3f7T`f!Kp2mU@agR7ZYkDeBFjytn9z52bgHmQ z?TW?oEnVFO_Z_IgVrqI2y22^GiKPB}Z8e~RI1`-+Io z4r-#bH#3t0;@MTw8r4@Z93B9nWgQ6S2JxZ+Y28q;)~S)4{~)huC*G6X&c)i@V{}}A z0SqtlxH8{m`K4*wIjBBV96S%GD-WTS9)!nv0Xs0**oj{Z_d?#}AgBuN!>$Z@d(VO7 z@^_qXk_Jc_nxI6i>(5DG$6ycCQ6*YS0kz?Ch&Fq=LA_G>m&8qliEDEQ?@FI9V8M+& zzw@yN`ZP7|g8Q)Y_UupA=0%-rkTKPrbZOiT+FjDQmL?~_Azq>OsM3p5n_T@)!F{Vg zxO6p2c=I9K^NJcgNq-L*M~4b@%OVqxea0*>W`Qvaj9FmJ0%H~!v%r`I{@+_*d3Qr| z?3$tye^YEtPjk_nwXJQj@{+cO_U3$Ren-)b9X&3c&{ zlMc|FUm=@1x{9oN%=Kqjt1T=6to-`QB}*19SzT1szM-M5wW+9~tGTGLqo+N7O;K!9 zXRI+EYbq+sPtjF3w6%3K7Oic7B2B)ugtqQjY+VY^V!Hb3ig0+*ywycYWKmbcrXpzA z73=Q421-d{)xzr*6}87Urll1rnGK|hRkY^Dc&yv%YD&*+S&bd--EnI}Lsx6VnzoqL z(HZM%h@-F45pCO<8%1xbJMX9)zPxL5_MRgEs*mPM@th+Uz>On`ETCpvdUmvbq z8D+bRk&!6_?`dy}t!-_OH4!&#JYBbZ;XKaMnyRXv^)V=mPd93c3Q`h}ZNi$ZxvgVO zLt9a_JKoS0&)2VO@-3vrx=gjKsqw`hG&pOw7UUBho$BI@O2Q>$t~ zWGLN~)It%cg}P|9P?^?c2x~_4)dfCriCPzx0%#qNJ~YvVAoFLoR(M z(=WZqXDPJ)yO{n9qqd*#xb&rGYJE2A zMm|i6uCI@Rx#oZWR82o+7^Ma@{dZmZrz45QS5 zrk^%Z_-|$UDWlf!Judwn=L8j_lSid5oh1D4KUdRF9F_inOW%K3^1?MJl58`JqcMn~R@Mkz|B4{T1j=y8S%O`-~eis8SJ4zsIGoxge+#lPQvnkfxuF z=B4=`Wcty^i$`7hq6;;DJA-Q~(u5$KGd?(hQ5aOAdVW)+yQ|T!2JDh<%iq$mKIY%h z+K5SvzqvK;rzxMGD6EAQORI}6FDbjKr1T2Qvo%LpDSq_08UMW2xp?MzWK4~-oaI1? zOJhe@48kzi0oQm}TdaLlq3Ptq6c8C;tv{Rb@>5` zvPPD5lhUbJ=_C`&e`cMo#T3;wmRg_r)$`bDXyRcWO9Z&mKdGe8Rnlde`Zi0yFN<_p zJ)N)yBE;1|`^;5J19#%f6V!7sg?7tNI{^N!SVL2kLdRA>(GRnLh;ZfiDhtq=M6?N( zD--12Ve*?}aV0*Ab$1*~&=XZdB)Mv6*L}OL2v%bn&%0k{HQHjE&`Yq^@Ai`(6c|;0 z8vQUkND*BHwBPulQa~pB_wvO2$5?7mJ)|*gZSRhCDIHE&1(D*apl$H9QbE=bds&4q zVKw45h3*@>X+7?zCH$!3_3+Kq!)zcjTm?Rbkk@)sDIklI99|5(noR*}W6_Sz(W_x} zB}9&^#5ScwK3p}tCkqer`&vxUhFO8F5sh^n&qz9wF+`NBhpvr_lpeBzTFH8REt?)| zJG$2WFKR<%xC(4khM2DukR_Rimo|S)S73c?y??#hDm%7#q8-){gu5ZSLDvC`4Dfpu z)|GA@DABR?jV;Gv`mCa5?P!Spq!KL)#T6|2huK6Q&jc>3XyI;%{;D=Oi|pdJ7pq;f z)ZMY;=zUp5%Zk<&t-UZEvBJ!mMShN#r8O+N6aFsdkJJ97UxlM8JbLF#&or#wMUtz= zKO^L|o>gkds`%e|wfna$YN*X=t;VQLZ&WQrkgLTPlooF*Eo80z2(O7hgIxit2h96S;3DvVvJ-Ad|OB~_&Tn=h!+cMp@=*3mHfY;^>&!r2hptHjDi$m(fYYy?{{ znT4e<7EZ**!r2x3352}X9ZIb1r(DAO9{JdrNr~<3>S*q2SRci^t)sbT^qJuZr4|XU zcs(n9REd}Eng3+*w`Yi_5=Yl`U?R{J?QBCAJdxsy2v@$IiTqm0m+hVfye;zq%UAP? z4fy^8J0*BUwFekge0r8)?Of!zO6V!!5v7FeA-%*(v=!<)NasjO(3d7Bu7XH$RnY5` z)36f3h60N|{lcJ1e|-cMFgHGN4Md2cL7CD(Ho96^gL&9uqlP%l2pz|!eaCnuT@OF#`FH< zNqBm&-nH=0qkNfc!~?UeliW>q?-`!mt9*gb?oeGQ651UJc~8k1=Lt*;5(~h|d?gd|RkIR2m7C2SDnJ_yT1Cgv))t2vP%q z5aOkP%fq37&+qq5i-21okdp%qS3>ZID8JrxXLV&0eJTV&nLq?ehXR4pkWX8p;luEj z{dDFn`{PqlqS88)ywr!HgixO80e=W33ZVkY+#jX@?w&adkv;G;L$F?PWEzYe@<(8s zvWVin=ED>~w!@jXY;T_#Kt%>4^(aDFz+Xm>D*}FhS8a4JK{Ro8`zJ zHsttAi80tt3(Tbwkw_78qbkbW;}PO+OY3GYQOrzOr0h<6PxknVBWRY?mPFqnR&{duy?Y@Um6O{g&#r%p(BUNB4vSkzaNe?vBA^H~q9?Wo%4y!DOe|d!A=^WV-vmue>f$w;TU_(|x`=AA-KR>AvDD zAqDM5B4~&zQa8OgQVRD&eulyUcxWE}d*+ zpA~__rO~)v@fz7$dNgKUXZ4x$uM}UPI3K4Gc)OWd%I@)5tmMZPD>~UQijr#gRyK~Ak?aL~PxYY8XwSVE z1A4cI!oB4YjGw&$?-bli?F&#fM#y9Bj`->V#mX{Ek6Wm08M9E?1wJ!W8Y-o^3IgTK&7yDtHX7()L5MZt}8*vR@1D4X<1rsl%XvA(eb^pe0OBHv*-UK7lK= zYYqo#xW_~@f*FVpK3F;6P~h^pghv83&=w_yD^^vlhsW~cS2xS%FDonixEL(`#pp;d z4&1QzFW&);*Sa>Vm=bjqsI|S(-_X52+R+ood0suGN^JVzpnhaqm4AjGz${saJ z(Mz%_nxPKw0fUg%C$h6k6$R%JiLBBuYlR)Ew^0wmBmiwTjK}V} zX&A$iQ0hZf)%ikUERSgQgoeY`_#X5)KFxWPm^GKJU+=l3If=sZ5`8^_k(uTb!yxpj z)xOAFv`sYE9*8e3$NXfjqE+f62MX5`BGoVfQ?b%|EcVLqFA!SA3g4;}z5>teK0%v0 z%l0xWE}O>QDW2VtY4~4NBRK)AWND#^W<=KXA%p-mD<7sh#hB>_%8IFMs`gb=(rcuV z{gc)u+g>v(BRj}vcs)6ndGI*T^TkL=Nx+0>x1LP59iznNKBl{)%tB;`*qe{4sz%EV zw5VOym`#hWHVShG#bCK2oHtB@S*6lp-?$I zTN%uVxg;r~Rx2UB9LV)i-D9o zlI>mWPLMOAWdD9ke<&N^tUnof`Q-7`0ow;A;#Y~@FyAfoEjuS?&nqD z+4Pyn?elVj-p6>kfqzWevw>Ft&&EH-^!FO{pJ05@z(2=$J|A9`0^BhI{|A}=RD=G% z7%wyM7a9MUfxj{W|M!^w+Xj6;zDT5c+-u+;Vf;-4r;ClV*=ODec+&{@Cz-$O@rZps z&G_!qg954dzcSu$;P)_oz`!44{3!!}g7H5Y_(8_=&&ZVfSH{mW@Co?VlkDa*@G}{| z)xa-d{D%e}V0<#4tyG1@V=?1r8+a6WHv4}9IE}M%%cgQW;IoZ!xouPMos7$^n}XlY zxZK_;_-@AKl19P5&$!&vDEMQHuPP0yA_;x~IBD8;mc~^g9xpK7ZQyS(zRAGfXZ$V$ z&!;b;!T);(K9%wRFz|~RU&-e>MW5M>-(cV&;MwfoI0C+91pFJoslMbENwLpejLS`u zf`6a!ZyNTbqp;cZ`S}R=tIX#S=7V#K>hovD>3&K22wpKk>nZm}iazf${Tqfp9;P2x zruhhc0pn8){A|YM+DW0OUk8%pFY*abiqYpv#(!$yRlu{^AwHfvw zKSkqmxuw{@`BaU|O_+k8$$YvDK1Hg*cr4jG6FXnV_&!6=s~IolLzP0mfbm%dzKro} z4ZMNzkb!qFzRbWs$@ppmPcpvNz`x4)HUqy4c(!`K9p@p*&T{Xi*sYrFDHmS~{sX3$ zdoBgv$8z@>a$jcrX#+pP_-_on5Jz-LBgeomW&9ljpU=2;ZcwU3y{~6{qJj4?USi<4 zFuvQszYIK^-3FL`$e^b`CqVjN$Ok(`sc|^{O85c;znJk`47{509R}XX_}vD6EAVW3 z-VdDWS8mdj`jYy+&*&Eqj=<+}=CjA3e+D>7i1C?GiqYp!jBhva_ZZ({;9j&V;&YdQ zPi1_cf%_SM(!eVif7-y80MBNhwZO?fa#^O>r=9UbMtN@>fzMBY6DQe6q!@kvh4G4_ zpo+`mYm7$>{6WU!2L4ONw;A}GjDOj{PsZ6@(&tA8egWeT8~9wt`we^v<9iLfj`5cb zyqWQ}zMvFUy*D$y!@xhw_}2~mPT<++}>ir($ zZ3dpl`!@e#;6BD5H1L^>KW5-HjPEt@HH?=|3tH))n;4&K;JX-KY2bGP&t{)r0w?>( zb&q17*BF;uDh2OnTrR5={0ZR1Nj7Ok*OwXZH1v6!@vR2#nXLJI$-qx%{C)#3Vf+~b zUĺ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 CnP$fT diff --git a/lib/core.a b/lib/core.a index e3ad6796a3714edbc94fe77c30f60f2e50563691..012caf9b222f78a3672bd4522b1d2ef5497f9a2b 100644 GIT binary patch delta 5538 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.lang", 0xa, 0 + example_data: db "Do you know Ligma?" section .text global _start @@ -14,6 +17,7 @@ section .text extern putchar extern vec_pop extern sb_new + extern sb_append print_usage: mov rdi, usage @@ -25,9 +29,17 @@ _start: mov rbp, rsp sub rsp, 16 mov rdi, usage - lea rsi, [rsp - 16] + lea rsi, [rbp - 16] call sb_new + mov rdi, [rbp - 16 + STR_DATA] + call putstr + lea rdi, [rbp - 16] + mov rsi, example_data + call sb_append + mov rdi, [rbp - 16 + STR_DATA] + call putstr + ; pop rdi ; cmp rdi, 2 ; jne err_args @@ -44,9 +56,9 @@ _start: ; mov rdi, rax ; call lex ; -; mov rsp, rbp -; pop rbp -; + mov rsp, rbp + pop rbp + done: -; xor rdi, rdi -; call exit + xor rdi, rdi + call exit