From b6dfb0ac294b111c5c5d5a9ee940b6075bbd597e Mon Sep 17 00:00:00 2001 From: Sweet Bread Date: Tue, 6 Dec 2022 00:29:05 +0300 Subject: [PATCH] .o's to .so --- dnstoys.o | Bin 1264 -> 1260 bytes examples/HWA/main | Bin 8996 -> 13428 bytes examples/HWA/makefile | 13 ++--- examples/file/main | Bin 9280 -> 13424 bytes examples/file/makefile | 19 ++------ examples/network/main | Bin 10396 -> 13392 bytes examples/network/makefile | 24 +++------- heap.o | Bin 0 -> 17008 bytes makefile | 28 +++-------- network.o | Bin 988 -> 964 bytes sbalib.so | Bin 0 -> 31416 bytes src/dnstoys.asm | 1 - src/heap.asm | 98 ++++++++++++++++++++++++++++++++++++++ src/network.asm | 10 +--- src/std.asm | 1 + src/string.asm | 33 +++++++++++++ std.o | Bin 924 -> 928 bytes string.o | Bin 528 -> 724 bytes 18 files changed, 155 insertions(+), 72 deletions(-) create mode 100644 heap.o create mode 100644 sbalib.so create mode 100644 src/heap.asm diff --git a/dnstoys.o b/dnstoys.o index 8af284ae14fa6077f594a64c428f165c51ffcd61..783328660c3a347c151841d89e6dba51f84efa33 100644 GIT binary patch delta 138 zcmeys`G#|X0^^m9ih@j&O_+i_c^DWN7#SHD1c5XYD+7Z#h|k2ppa`YaptLrK2C6dv z(oAd&45m%^GhUgzkwsl1g_(gN52y$RfM$RJ E0I0qY6aWAK delta 143 zcmaFE`GIqS0^^O1ih@i`-3*hBn1Z|+7M7#JBD7zBYd6DtFQB#6(%z@QAJHK4RE zhz6=N0@6%u3=HN_aYqoJoq@q)^I4|JjEtF+6IqlQJ0`cXs59P}yp}~>B7>QMArGhs J27qRO0RRs;5VHUP diff --git a/examples/HWA/main b/examples/HWA/main index 8fb7e1b32f9b7ad658060f06415ea4628bceccc4..fb0303f62ab611c412f13682c6f7afe485aa91b7 100644 GIT binary patch literal 13428 zcmeHO&u<$=6n<_EH6egoS{exnZPkXhkZux`azH9lQepyfX;iAJ2vw_fcbm0XudUsU zaK(WX?#L(Lz@dKv2M+u=5OLrHQuz=EK!yqf)7el|8ao==BEG+7k3ni$!Ef9I43(*)Mf@6itjRZ6OCR9nh(YHexSh z@Rx2N4m=H?V2ooEM%WkF+9N_Rj^T?qv|tXz?=Xo+fZezQ`zGSR9899zKbRK@zOUAZ zuMpb?IB)jHqof=kz$X~z7#DuagL3=}v=Mgx^KrX19|x!6cCy)bv#$G6vF3fqp>P~N zqbyuAdEppbhvi|H3$)!&%JBn8I9f`ge{jM-HQ_%#;XgOwOD}CFxeJV~Bpw@Co=Vtn z+xAvF5j3@v4Y%i~S?IBgVIph!AOt*^p|`8GeVBBW8YI-HvG8eXEWS<+0uEA}FQhaf zHI)HnKp9X5lmTTx8Bhk40cAiLPzL@t21cjv;DkJyy^BviWHc){nME{rejPz(d6J75 z+qq?Yp6DW;&Udzr&y!s=L;p+T^Mn^U^luuUC%xzd{Q>;w16adPVGV!Tbw8u~16>~H zho94WlGZ1%zUHy{J3zjf!BF4wMEmpBk6VY~NW`Y$20I*Khby#9+f`VXKi-~NAD)CY z4EWK-2M1D729yD1Kp9X5lmTTx8Bhk40cAiLPzD|{2G+tj?mF*x(>ORXC96purcNG( zPO{l)h3PAfI4?Sj3(gtmA>&1ts|+Xu%78MU3@8K2fHI&ACaXS#Emg8;!SDFM1c3SDLHdJ!SALcP~ogSqJZVtt|7h+)wj+i{Ohi)XjTg;O9P6 z5)_s5;%3)7x!;1$(?UnqLiv1{_Qc&tHr>e2B5{N33DOIVXS!(^yS+FUHxK*x3?uJa z>UTnu;CI?r(YKoy8JL}2?0?YDB8T56_mjD!0f+Z9tT0A74see$kNb8F0q#HUV+u8K z6!>#A>N1b}x{o{-giPk~ZUXl<^SIv!$m929??W)Z4x9$K=b0zm-!S;Quwv(T1`Uq^ zD*%57>&Ub7n?@VQlR+vXb z0N2et{zhgNaQ_0f73NUv+zJo5$h!sSDS&;MR|o8RVHz1CZ__%^9EZaHB=)m%Wl^MK I9cY{PH%u>2*8l(j literal 8996 zcmeHN%}Z2K6hHG}^L$!r7zizTE}|$AC!#b)sAM82!Ia7p9Y%dN+BnM06_tu!j0-O=&E)WS_G!%dsw(L@j#DlP1H-kUe`$`-b2a}S(%&+pvxap!ke_s+c= zzIe{#@sJ~4@{xsR{mOATpI6&6$4MhU9j0PZ?0I$@euecJOjbYp%E_L`NT|U&;3Z-$ za?fi34>1ot0+ZF9Ujtn8)UU9@B*weg;JQ*I1CjyBfMh^2AQ_MhNCqSWk^#wpWI!?? z8Tcm#Vz&@(w&BQceuia3lYOfU`FL(VU~3OsbFk)p_++58z=!k25?IT|l5vzz>M?ei zH{ps^b3&9Y%l8;9+S4!97V{H)<{kbt!UwrL^|7VxQtOqg)6L4{?s`<1=c|AW&n_@r zWD7lt7|=}EKNVIYUDvO5w0EXo`(NerXPTA8Ey!6TR6!$~g(}O&wxj{ooIt26IgE>n z46Z3Cz2UtbSpVJ{e3xBo$#Bp1kXHo!b(6lP>{^T+<|K0G*=kr3fu*J`x{&>`tw&*D zsI6vH)DFH&Z>Za)&B0m*=5Kr$d1kPJu$Bmq$XmzmKYiA)|00+(vE7uI;~Or%L@5K*m>Xne||4{iEjctF1!zT zGmm|w0l#r!{!jn)Y$5*y@PrGW1Ge4}VAzXS1!piG!I7KY<#*lkcN0;7wQl z4PbYC0=V6kp8|f7Uk^_H!^!@HsD{wFe&@lE#fduxn>UqX`L3u&v)_9FTH?fUPpekW&v74M2cSI1ar`{Q f=?l}6(rThH2Vmq_7A)K9X#spD5O>l67@fFZrH)f( diff --git a/examples/HWA/makefile b/examples/HWA/makefile index 0adebfc..d6206ad 100644 --- a/examples/HWA/makefile +++ b/examples/HWA/makefile @@ -1,16 +1,13 @@ all: main -main: ../../std.o ../../string.o main.o - ld -m elf_i386 main.o ../../std.o ../../string.o --output main +main: /lib/sbalib.so main.o + ld -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 main.o /lib/sbalib.so -o main main.o: - fasm main.asm + fasm main.asm > /dev/null -../../std.o: - make -C ../../ std.o - -../../string.o: - make -C ../../ string.o +/lib/sbalib.so: + make -C ../../ clear: rm main.o main diff --git a/examples/file/main b/examples/file/main index 30355a7e92ccf3555a699577fb1f0b4a574a12c9..281125d508d4fa3a23c1839ec90b608ee9b0075f 100644 GIT binary patch literal 13424 zcmeHOO^Xy)6uqsT*v65JW}*WM7U&ouSfkRDh2o+onbt_F5JjU4i|XzgtFgPPsj9&i zlzjbxCW~Z~#ejc6!G()JT)Gte18$U=y#^Ozd(NwVW6=nbMRxbXsr&A`=e>IG%sFzA5v9?Jz3#0z9T&co8KALB$;z&gf$qt#8PtnC(^=EJZGXR6i=p!~Whq(F+ z^1v5}3FbIAVT@ye+nYoP<}rPqhZn4Yc#0x3^F z_ssip4(eld*w6xfAF|I1ojcL~aw2vo;^KVd@0-XUn24pHbfV0Sy0YBq25zexr@^={ z%@PR)oh;A9{U921;wTHEOpFX^(}x-mf%85pSGHgQWqNG3LXXW((PQJ&^blu;-uy8N zi_xYkpbDr0s(>n>3aA3AfGVI0r~<0M|Ej=f;WeI+M{{p*<&8#je2NR%Tz@u#&GBh2 zWN!V5iTP9)^67m2k%{?q7tS)iXJS6(g%0CY6Z2^=Jj8g2IOGHS+6%OP{Oz@@%!FGR z|ABbzJ}-aca(5O(Mhm>I-Dc;Xy!?*Kxbr6CCNFp1cP`o(w^CCDQ~^~$6;K6K0aZX1 zPz6*0RX`O`1yq5e0zLmmz&F2Ai<}@y;>3wtt(7DR+Rn`o{SM#zcB1P}76y(X7DsDa z6;K6K0aZX1Pz6*0RX`O`1yli5Kow90tOBgbJ^`@y`!wp|U%eg019(#>{%g6yQs^OK z)_R`-wgG&>Zfm_+Fa8qm=UG2~1egJK0K0((#>4$5V@@mY^*!~+6M59j|2RsfZaRsCBXtbU+^=YmhDnwV{GJ~vjIHg z%fNg7lw3o+w=lki*c$nv4d5Az_uZ9qwX@%UE8eNb`NdkpJ72F~Si0z4tSvT{ybo8u zdtNh5y)^TaaS?oLT>8FIH17p%Kl8;4qV{C1ytwJDUgkI9vn2PSZK32oNc!Slk5=5! zPeXCrw<6GUkGgv|3A%2-n~9qR16+g9TTc95UVY44;?m?b^OP(e3 zeFg%4n_-PP+E)P2CwV-xr;*^<;~A#W6Z?UGN28cLp6LO2EC!k69Y!C|HF-SiL-6`& z^B%k>`8@MH7d-Fe3C}hf{7qORmv$1^3M>Nr4K%>B>zhI!=i}k30UTpKH{kihO?Y2x zyeGMJ!18!b`$!bel-&>Sxv{=g%;$(4L!ULvYoLSkaUWIisty_jv%E{_?*IS-Bhk2ucSReU$pvjM#2y#xDPP7weA literal 9280 zcmeHNUuauZ82@r}V{fw-w_2qjg}Xh7Oo)qArV^oDmoZoe*=oDgQbU?tm)15Z$t~Mt zu!~{PHY!yMf(~?ck3RU|L%M=a932xfWFQv$q7UMQ_y={;g0T4e&b>E@+KuU}=fFAV z`+eVczVn^mxp_Dz=UjB)kk98MuPEdvffiM*2g7jvc*(=&(|@G; z>tWw|?|f8CyzujG zZyhTdw7_ zjEZ%UGuVz-u@7G(^-&&bS3IfIRpvXEid7!vXk*$)@iVp5TCqw|wGpRyRc&mM2=%HL zz<$M%idTXS|AzCzQEjgMERrhoRnIDXX@#L+v0|+S7|>lNJF10mT9IA&Y7SI48$q^7 za58A0$5u4vMxv9-s@SG2|j0inxCBTd+#NDnfVECRIK{%p%iVyri8Cs5sl2& zg-&g*b4OqG7m-+-`(r3x)&8>R@P-xX0%85t&H1tVPYjV|kqk%%BmS2dr9es}{XM3fFvs11GOEf4$YA>eP`Y+xPutGZpK$AB+2;r)!8 z{QH2@P52nFc*B6M1Fsqe(D(5P6=f&2h&KuQ>;4KE(686ApR#}Rp9Q|qH2!7ackB81 z=^Su+(aYaQuK_RBF^;axe<(GTD;PABpU9daR970G$WpbrsEeuG%o*1KMpsH@ zl6gub#tVf+!A#~&H*79z8uf75DM}dWq?tsQO_OnY0uv?8Oo&s+CZ`Q&5Puv*p~9JI zGdYgl%sYL?lSIa*aoS{KI^;3%Al`y7H+T=S)HK@r?jCOPV-A<# z_azT>i|6+UuosW_KHWjoyN%zzCO`g$E /dev/null -../../std.o: - make -C ../.. std.o - -../../file.o: - make -C ../.. file.o - -../../path.o: - make -C ../.. path.o - -../../string.o: - make -C ../.. string.o +/lib/sbalib.so: + make -C ../../ clear: rm main.o main diff --git a/examples/network/main b/examples/network/main index 2ae5a2cdcc36b2d35ce3415df264dbe8b5040aaf..756bac4ada76724d709b3314957c49e1b918b57f 100644 GIT binary patch literal 13392 zcmeI3zmFS56vxMjAqGxxga9W&VF@loLfH$^g#wAf2j?WhkO-m>s>K)Yc`az^@4wercyQfLp49hlE3aUG>}Y3oELEa{tbTbDi(2HSn!`fOXSf zQ@OH#CL7>qjCX%2I%WS?Y6D^Y8~xtSM!$2q-y7bTM0pmSUF`XoVi3k*jv!&b@WL4E zBk&M>A$D1p{m12exfFo?{E`jNLGZs83~B6>OST&(#mCwBqv+!0xX9wX7`xH9H!PxI z|DZxsGU*kEk=>+-dn4Bw=0!Hmqrp^$rzGELiy0BZ9Cxan9{X8(fH7bU7z4(DG4P)=FhBRZZpicXKU6aKe4U$HN_GF| zxn!LiT#9f1uD7|#rQFW4 zzQnvqaf{+>iXT;|lZi243>X8(fH7bU7z4(DF<=ZB1IBY=AM8&H2zlf8^#43L>$KXgCULW;x|8dr}6g1H(Y$ab!n^7iZ3;r?`>a+uQaw=+woy?`~5Wd zkQjfE?!L&1CmBADck*1B^6hbPKUY3ZI_;wE;$+zQduF^(op(__9Te>y>0-RlX{agL zJ{gZ()E(Z4(srJ@s52cZe4#a8G*0@_s9(6KNG2+iG~OMz2Z;}84|>=gx}`#j5yBrL~$gAEXSQz8|Rxi z&iqVqBh|y32;x_Ta{}j{IL8@Rh3`g?u)f#T@QAP_@Ljm3xUjzPCWJ%P5a{Ed8gTA3 z3G)VFPUdb3A&&Dol7lq|3HxEr!}TeL#nl)4T8?X}f$`YKisDx4s+1&*$KF^QWBPY1 zdcQJL-Ty{N6URPcf$@mr`*%-qFRC7dI1uIx?Q3WBmPf|p0)2_m);xFELG~2)Nid`t T2jTao9Ji}?L8QfJ8tdAQ6xV zNCYGT5&?;TL_i`S5s(N-1nwPy@>aZcmsJ>)Kfoo<@8jhPIsoNooVX0IV1h4CnLUD? zxu1eNUfBNPuKa*9*~)L{MSg9cW@(AZDc;R%vyDtpA>hgdl<> zl&K2F(^}7RI&h=zWnNokG~zD51y!4IKpAmPBSFeucOG7H?bq%8^ZM1`G{+3}IK>iI z*JMM#el^aF@+54FyxX`Smdy57XsiC)q8RnW;M+azhHwA*>~;4d@9vuS*#ECK|~7$%ew%=pkpC>(-LFO zt(!zk-aEOnuUEg^tA97^pt(K=8eER-SB-C6Vy9}Z^)W2PVW41CWQn6x!yjG8qE{d) ztm3VahX1@;c#v&QLy-y-o}H(-SvIc?8L66@g@Lxh&h~1uCae0xXs;DUoBh~5DoQCI zcjcdLR5yNe*gF^S818TX0cK}B`9s(9p&RPfVEO2umCA0%+3XGT%v>l55>EZ1nw>yJ zt`3&pyj1~MsRgfNL9GN7{fAt@v*>3uVyhf4KTA%)L#RMU+fJZ@j9S|KC3YSrA7+J3 ze^n}RgU9)nA4M6Vnwnu|tELv*TyDtrEWy#sArX)WNCYGT5&?;TL_i`S5s(PnCj!H% z)bMD`w>Pz)Xni#H>iTpf83hqdW_%(wo}t9peR?$1@ecH)g7I%`|I;>jmBXJLME}1d z<~uS^R-W?RDx8Zy_AWYm7%T9_&I4GR-?3;Xtpfe&kvhE=^s$<}ft~<;`aMhDNWGwi zO}-7Z*XDl^^q9?G4D?J*-bhK%T{ih^ppEa2u&lsObsQ_V{+QiHZh9N*oGl(VJ&)P! zKLl;pKMuO%WZnJ~(82eu{F|rLx_kNj}X#FEh}Yi~S~rf_&qCWCm9 zw6L6vMbepAxE?q;O5s>EA|hB|3@`kI_w65t^Vp$;Ao69#_lw9LtRii$@!C#AeIj;9 z7&6Y?B&^#tDdWF}p=3EX`A7{o-RoElMXodBdoMm4w8tK|85`e;fquxQ$2HIey?)!% z+0uK&rpL7=mJ@w^2Y+0fR$Q(@?+PM5e`{F&dcm;txE5!icjOLnpSS68%>>(t5|%Tp zmcM4~xk-uYF~5oHAZp=#b=*mh8=amGBBROo4|?2#^WH@-1UpWfV{^@SLXW?*vxXIy yb&TAqf{sr7=D_6GEMq /dev/null -../../std.o: - make -C ../.. std.o +/lib/sbalib.so: + make -C ../../ -../../string.o: - make -C ../.. string.o - -../../network.o: - make -C ../.. network.o - -../../dns.o: - make -C ../.. dns.o - -../../dnstoys.o: - make -C ../.. dnstoys.o - clear: rm main.o main diff --git a/heap.o b/heap.o new file mode 100644 index 0000000000000000000000000000000000000000..55ec61fa17ce3aa3d4da5ead51f2845bba084bec GIT binary patch literal 17008 zcmeI)%SyvQ6b9gvq%8>|UKS#*L|iCBpdu)U5U+?RctNd|YFipnP>?o41;Ii##yo}( zp}3M(#I^2pBZyGw8@N#CBxy}oF5UbC$(%nk946lb%=zr%oFqw99}+3_n}|x2{>q3q z4N#1t)Dq#)?l0gC0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz!2b%YJ0Hty zE2|ru?vi@LM~Od`#>h%tcJH;_zEeJJ*q?MFJLPfptk2ShRE6xjNbU7O*4&ipBqh5X zb=KA0o#fVbB2{som6ZCRXwxnYJ~|4Asc+4BY2FpIw4{aFb^OWjTV5=?GySSvjh1@9 zL=|yFO4#?2N~<_k=z4>OS4X2F@5Y0krYuu$D0h-fgCe`ZH_pSMb?+twy>NPDWwN9f zth_g83kA~i=AmwxMT_>$%(0%y<@_RN9+Fu+utH7#DEYj6FM|^7h|(fN#lvUe{rvyjt9~|7 P()=XRC>O!tK0JN^WXD(Q literal 0 HcmV?d00001 diff --git a/makefile b/makefile index 3c124cb..34c6353 100644 --- a/makefile +++ b/makefile @@ -1,25 +1,9 @@ -all: std.o string.o file.o path.o network.o dns.o dnstoys.o +all: $(patsubst src/%.asm,%.o, $(wildcard src/*)) + ld -m elf_i386 -shared *.o -o sbalib.so + cp sbalib.so /lib/ -std.o: - fasm src/std.asm std.o - -string.o: - fasm src/string.asm string.o - -file.o: - fasm src/file.asm file.o - -path.o: - fasm src/path.asm path.o - -network.o: - fasm src/network.asm network.o - -dns.o: - fasm src/dns.asm dns.o - -dnstoys.o: - fasm src/dnstoys.asm dnstoys.o +%.o: + fasm $(patsubst %.o,src/%.asm,$@) $@ > /dev/null clear: - rm *.o + rm *.o sbalib.so \ No newline at end of file diff --git a/network.o b/network.o index 435a59d5741606a94b8bad33947489b2982a3763..b6e60194406081890d2f723f0eeb5978084a6d6e 100644 GIT binary patch delta 88 zcmcb^euRC30^^m9ifW8Z-3*f>8T&bX7#J8B85tP5CjVsgX0+Yx%EZmcIBjwuvoh-j fps>Z{N@iuI7mSnVF{?>rFflM>1J%O-P#z2b$7K;G delta 97 zcmX@YeusU60^^&FifW8P0Wbdi|NlRl@kaA+rV>Vn<^x=lJsJB2jTjghnAjN@Vt_Ow zBLl;%$qyO58GSeFGI299E}JaKEIiqVS%CEbP|9I)BC|3R1JmR-W;Mo!$!nR#0U{O~ AegFUf diff --git a/sbalib.so b/sbalib.so new file mode 100644 index 0000000000000000000000000000000000000000..79d1df973d8fa6974bd43851ce7a3e5e3545c654 GIT binary patch literal 31416 zcmeHQeQ=b;8Q=RzxEu+ANNf;T10}Ud;1I-g4iKA|#&9HexrA_+CU5u{ zfnGg7a=CWO*p8#q4l@XCt+s=-(=iFkSDb)CY6r0sP5-Ha#<`Y`3If7#{r%o|-@7-E zPW3NaXLshg-#)v~?mqk5eU}{X%|1W$-?h|cvk5afghQCxd=xI*WYo+T9+59*iyK90 zw%%+rdx8)YCkrMEqaMgSr3-bGJZrrNij>*NQmpOcbA^b1$B^fj2tmn*4g0eLto3o~ z5Z1GgRcExO@#4HQ3S}9AG%-ztfF>~&LR;E#9F|QUn3A7Y>3Otq(yE5F1`{aF*_dO}ce8KKk3O+~ z`p&trZ!=AP^R+u)Ue??<{if41ZV`VRz2kV-L0A8U(lV{N@AmDFZ4LF+Ju_dsI;Y{v zU2iX2dtm1~u5VZRfA!GDx&vJYYvwffjSTJkp!l6vnh&4&#rj)zJ>cE@{pYuseVh0w zGOx=)OTg?2=*1)-sRT3b1OApIAyMa?Pf0>bF!KkYr?Ps!SPp$ww!Z?g7rJI?{}br# zmj1DY#0gFwsRXMx5BSS$d$-sFeZHlA8T8+0+ZT#2KyS*ncZneMt(N-xp_>a>f^|6p zb)Tg_uE$9(CKBiKSKup__8Xw@vCQus=%4=_K9EYVl6M1RS%0znnxdWF&QP>T&oqa$ zhHy)$tx0rh9WBvjZ(AtJ3N5y!)4O3yOS_1Mv`w*&^sz>AA+XSZ7FP zV^J*>)y$3>W9?f+dr*sbX&4P|2#H82*zOHBH5r+vP@4#CZqc$MEDtnju?F}d+Tn`k zZHxrXY_2fcCTrKVL}d=P=AiAtj?PenrJykuZ47GUq6i%EIeJUt6^S>1Tb8esSR=7h z;&zD%i9eS3l*IiK+p)&%=YEL~N$ipMQ;APVyehE(4;9-@l2|IyBhf3dO5z<7t0k_M zSSztXVn|}E#GgrgT;i`K9+dd1#J@>=TjE)X7bQ->Uef)QSSs-uiO))WLE@;yFJe!# zU6sU@67Q3EO5z!b|B`qc_Bz`wl^Brt2dtkR2UQ7pBz|4u(-Lojzbv0EagoH^;1A2o zC2o`Wh{P_o$3ypXA`Z`9mIHTF$66ny4*VwjgY1*IlZXTJIf=(5R^eH+n+H4Qp^{=i zF`yVw3@8Q^1B!wFcLvrZ&jePlTy@X)Qq`{BuPzqCcQU>}X!Sj1;o|uTx;lCL`IU4xE-#VPUS zV@U^j;OU-s?`Z?dp3Zu*JKx)Y>S7J0T?zxJbGYPFG@uG8JN6tsTD=>N` zlgZS@%N=vIg2ZK^IaZ|KUuGMwNcyu*WbJ$TjefuI2>olO=;vY$#RJKKUVh#0%dZfk zpI^v_;=TO-TsIU?`CWY_DE5uS%gel40X{Lr;`DpTX_Y8j;MIyq&%~ax?rD`3>9ZB- z*9L9kXr&EbTy2TNc|UrWoraS|PC#!nzRm9E0Db(B!|xWX`T?p^Gnv)h@SO~&O4;TB z3`J^N;hGol2QnP1*IhL%Q`M7GYo~r<q8rkz$Y|opZf4cCw zTi_$mdkBO1Mr!-9{37wP{eYeLXU{=w>dYG7Ke6DuFTxYu1!K;>k)E0C*fxwAt=31) zRd5t+et4KG+qnJSQ*)4J2L8vzfRr3168#3A>1;~KkUbppJsz=ydW5xoQ> z$~}@A-|1@X&;tw5uE#m8)g4Y;bZ>J6(v$l6Uo#)R-~HyQd8gCw)|9)o3C?-l`AgI1 z7AGz{wfw<+@6z;%!F+*D!`9}e5xITVQ|;<5n(-j^5WZoG{an*Ns`}~<#Rv1KT>rS` zNT_!8bK$Gvh+`?gP!rlt6=sh%*O3{eR8P#<-;M|(Kc<<}$Uvk@q(`U!qftjwt z(e0QYx86oT3jaXaoU<~8v-GW7lRN^8z~~%QIh?aFndFRFfzj!-)DPR_n%q2`1Mo^E z#eiZ!F`yVw3@8Q^1D_THbDKgN=XM06O|cF78%4f36nIg%6mR`Jv30GXM$PkS`KHEI z3@8Q^1BwB~fMP%~pcqgLCLHSXC#V!~d2h>PCDDRZ5ucD~ULeAlolG{| zRKmMUtg#~ zjV<{AbZhKK#*VbcX50zg8r$(VP_3~U{{-C{oAC&AYb?v-(5g9{aiMePA=V*jqWE4ds$54x7!$a!PAjiaw)Wbbq6D!ha z&Df3En3I;sjo2i91YkE$Pk7;Q707llFzoB(% zO|pTUkWn0pG=w`C4wKymH?%Yg@4C)TtklO#H^Yo~{NS+A@BQH#?}6aTA3gDk5z2JP zhq%j!cDxse(u@4HcDJI8cLULm_XSbb!j^pibmWaCUxTnM?RdWsh4%`XiMC9```@gQ3o}TV}E2Gec=cnVC$x zdr)BZ$7h4`mvQ9WR7dKV@w=fbPMBSJUfP^p%jf{_b|%nAJ=WR#}H(*$?R_jO1Nh9QID@Y7l^!B zPvrVO0bzgox>q1G4>32F0A(`m%`wgLat&u13PHE-3+=Gv`kpfP5N&_gCB#)`WMV%| Uyx+=d_w+^~^mACRHGE?B-&bL#761SM literal 0 HcmV?d00001 diff --git a/src/dnstoys.asm b/src/dnstoys.asm index 74e1220..1f330fb 100644 --- a/src/dnstoys.asm +++ b/src/dnstoys.asm @@ -27,7 +27,6 @@ myip: push dnstoys call network.get_ip pop eax - mov eax, [eax] mov [DNS_server+4], eax push dword 200 diff --git a/src/heap.asm b/src/heap.asm new file mode 100644 index 0000000..e4298ee --- /dev/null +++ b/src/heap.asm @@ -0,0 +1,98 @@ +format ELF +public _add as 'heap.add' +public del as 'heap.del' + +include '../include/macros.inc' +extrn exit + +section '.bss' writeable +_heap: + db 0xB ; flag + dd 4 ; size + dd 4096 ; available memory + + rd 4096 + +section '.text' executable +_add: + prelude + + mov ecx, [ebp+2*4] ; size + mov eax, _heap + xor edx, edx + + .loop: + cmp [eax], byte 0 + je .empty + + mov bl, [eax] + bt bx, 0 + jc .busy + + inc eax + cmp edx, 0 + jne @f + mov edx, eax + @@: + cmp ecx, [eax] + jl .more + je .equal + ; less + sub ecx, [eax] + add eax, [eax] + add eax, 4 + jmp .loop + .equal: + mov [edx], byte 9 + mov ebx, [ebp+2*4] + mov [edx+1], ebx + add edx, 5 + mov [ebp+2*4], edx + postlude + ret + .more: + mov ebx, edx + add ebx, [ebp+2*4] + mov [ebx], byte 9 + inc ebx + mov eax, [eax] + sub eax, ecx + mov [ebx], eax + + add ebx, [ebp+2*4] + mov [edx-1], byte 9 + mov edx, ebx + + add edx, 5 + mov [ebp+2*4], edx + postlude + ret + + .empty: + cmp edx, 0 + jne @f + mov edx, eax + @@: + je @f + dec edx + @@: + jmp .equal + + .busy: + xor edx, edx + inc eax + add eax, [eax] + add eax, 4 + + jmp .loop + +del: + push eax + mov eax, [esp+4*2] + sub eax, 5 + and byte [eax], 254 + mov eax, [esp+4] + mov [esp+4*2], eax + pop eax + add esp, 4 + ret diff --git a/src/network.asm b/src/network.asm index fe78f61..25f063e 100644 --- a/src/network.asm +++ b/src/network.asm @@ -26,15 +26,7 @@ get_ip: push dword 0 call dns.get_field pop eax - push eax - call string.len - pop ebx - add eax, ebx - cmp ebx, 2 - je @f - inc eax - @@: - add eax, 2*3+4 + mov eax, [eax] mov [ebp+2*4], eax postlude diff --git a/src/std.asm b/src/std.asm index 08ccb0c..17fa64d 100644 --- a/src/std.asm +++ b/src/std.asm @@ -69,6 +69,7 @@ _bin: push 2 mov ebx, 2 + xor edx, edx @@: cmp eax, 2 diff --git a/src/string.asm b/src/string.asm index 4650bc5..01accff 100644 --- a/src/string.asm +++ b/src/string.asm @@ -2,8 +2,10 @@ format ELF public copy as 'string.copy' public len as 'string.len' public parse_int as 'string.parse_int' +public concat as 'string.concat' include "../include/macros.inc" +extrn heap.add section '.string.text' executable copy: @@ -82,3 +84,34 @@ parse_int: mov [ebp+4*2], eax postlude ret + +concat: + prelude + + push dword [ebp+3*4] + call len + push dword [ebp+2*4] + call len + mov eax, [esp+4] + add [esp], eax + dec dword [esp] + call heap.add + pop eax + mov edx, eax + + push dword [ebp+3*4] + push eax + call copy + + add eax, [esp] + mov ebx, [ebp+2*4] + mov [esp], ebx + push eax + call copy + + mov eax, [ebp+4] + mov [ebp+2*4], eax + mov [ebp+3*4], edx + postlude + add esp, 4 + ret \ No newline at end of file diff --git a/std.o b/std.o index 069204b247e4dba7dce2c74021b7fdacd6fd6a8b..e4d6f58e6f3624dc4005e63bec679f9c095e799f 100644 GIT binary patch delta 170 zcmbQkzJPs#0^^2>ii?>HFHJn6!q_(1i&14VFQW~kDv+h;%)r3Mz`(%B$iN^ArL~~+ z0w}!^O7Di!|Dd!GP!C9-%;cSn)q=Nyq97o|z{C&+q-`dyQ60$An_R;vp*fF%fq{{cfnhzA-U+4u zKxqM>97tYj@?OSj!J9x)5D;QuVh97$R+BxMPBS`B7G+jute9-ctj>5~aw4<3L;w>5 NLo`?=ga8@<1^`3K7s~(u diff --git a/string.o b/string.o index d6117586a1485a17773daf6fdce6cf6b9412c50c..fa8cd2db0f7a0373c15aadcbb09d528a1d47ac7b 100644 GIT binary patch literal 724 zcmb<-^>JflWMqH=Mh0dE1doA%hY2EM0;V(=SQ%ItLOY)Z1P2C%g?GF1bjNZSo@}t; zU?}1265;3&;dXrevD=lU)0HPaE-ErQBDVPm$6+K59EP_WY$O;;n4MpL?~LVuDne7S z6Xb%l3@(NS3xgW|1`Eq_t}cm&*9K|94zJ%B9)L(kr#1iPD&gW^e>3|e7vqiB?>b#E zjr(89^P=uQ5R`JfC<9X6E-EaHEGqwbR9^f6aw9qq0aXON&;qiVSyX_Y>6B3kcp(i^ z3GxI-XDGrSEQf)vItIi{Y~a8^Aw-dQpb%6-;tK)!dO*G*R1Czo1hRvX_+CKvA|!qU zlntT;K!jd#Wo}7g5|Az_0@FpQIUsgsUbrw@RuBt7eg(x4EEqs(<0q147ARW~NOK~I8vr$N0Qt;74AKu$ t2jYX+&}0T=F)&yF1qy&PNFF2(qCsH*G7F>^237#oCBisB8e|R#000X_lZXHS delta 207 zcmcb@I)P<^f^Y#N0~nZqNeu=T2Ih&zi<2RO$fO_=hnazqK@N#81mtT0`G!z25Z@HY z4o2cL=oMGymLw(t>5?K4J$Wyq>0}`$rO66R9I7DGK`vo~>Hs-s5tI$0SU|+&MkZm- Y8$d