From dc6d943e5ccd4762f1dab7dda8f57e07927e4d44 Mon Sep 17 00:00:00 2001 From: Sweet Bread Date: Sun, 6 Nov 2022 19:11:41 +0300 Subject: [PATCH] Error handler, makefile optimisation --- examples/HWA/makefile | 6 ++++-- examples/file/main | Bin 9240 -> 9296 bytes examples/file/main.asm | 20 +++++++++++++++++--- examples/file/main.o | Bin 812 -> 928 bytes examples/file/makefile | 6 ++++-- examples/network/makefile | 7 ++++--- file.o | Bin 1420 -> 1440 bytes src/file.asm | 7 +++++++ 8 files changed, 36 insertions(+), 10 deletions(-) diff --git a/examples/HWA/makefile b/examples/HWA/makefile index 0f22a74..e469b7f 100644 --- a/examples/HWA/makefile +++ b/examples/HWA/makefile @@ -1,9 +1,11 @@ all: main -main: ../../std.o - fasm main.asm +main: ../../std.o main.o ld -m elf_i386 main.o ../../std.o --output main +main.o: + fasm main.asm + ../../std.o: make -C ../../ std.o diff --git a/examples/file/main b/examples/file/main index 2ce060ebfaf30ce40be767b8b6229600c881096a..3c10d90a01dce976ce543f111aa3ec45f403197f 100644 GIT binary patch delta 971 zcmYk5Ur19?9LIn6-d%PL!@0CS*w~#5iVRi{VT6IEg3!xsW-~MY?dTooX4efNkc}jA z&O$prND*cF=!4?RwB9142g8?O(Mvrh@A;nd``vTynQhu^ zno@ja4IDP6`;;Yx!e6{s@vQhCGohY@( zYa~ykXzU+Eq$^v0_@M1fY;0#YTJpA0!BU{}){VAyf5+?jo0u~-fJ)Lqud6`}8*#0H ziu{GS{4WBim{G;}lA*pF^_Zq6D6rs*|YxdB>3NY`S1uW>M^(dwvW3r-xR`IH3b zJG!vXDwvQ=-V|;|?%UduzT-sx8ZlzEoE?|yxBhA*7zx~p)Fl6HuXSb(2l9q>39_EkdmiUX_z)|u^Jw8g z<{2JgEYhR1?tn+b!1Q6L3#m-k!@3&o?TzX>3#cPnaDb`dAr=aT`qhZW)IJn=ks9m% zF^$#XV+Rq6v9IBKEWu&q&yV(5MgEWRLn@Xn~z{FT$rCX*CS>UDaD&aD}$$AjX^9uHVbQW?|ms_syI4z1f{?PCT8+ z>(Z5iFQjhRh&BrGKCPFCcqka;B9bt9bc{EO-Sf5>-943n5-BlTM>v`@GLiX!!##wC zSj9#&#A0Gwyu;!?SjF;F+3&{W`3n~><;LxXc}CoHok*AZQLa3X`Zi7 zELfd>&&L#}+hf*Lm6JOg?|2?W5LYgU6jK@>l*de6Lz!`)@@YJInd1UEhZB5>2+z9`L)z+pL3Mwbm6H1TVJnQRcS%G4P1+`Ml{~ z^b5c>>!1kcovkdHqTtspw$XKPd;S7A*|z^S_(sdsMrrWbe6vf59)eRX#>a}qmp}Qs zB`GDo_`MEZO5wVH6o36*bp*y}F%VGsAdBL3U{G?1a{;f)SJ5e+VWswm5Nm+}DJgy+ V-WBftfu24;(Meb}AO3dy{0BaY)Z_pF diff --git a/examples/file/main.asm b/examples/file/main.asm index c1f3e9e..9bdee99 100644 --- a/examples/file/main.asm +++ b/examples/file/main.asm @@ -8,9 +8,14 @@ extrn print.str extrn print.nl extrn exit +macro nl { + call print.nl +} + section '.strtab' filename db "makefile", 0 +error db "An error occurred while opening the file", 0 section '.bss' writeable @@ -22,17 +27,26 @@ _start: push filename call file.open pop eax + + cmp eax, 0 + jne @f + push error + call print.str + nl + call exit + + @@: mov [file_], eax push dword [file_] call print.str - call print.nl - call print.nl + nl + nl push dword [file_] call file.content call print.str - call print.nl + nl push dword [file_] call file.close diff --git a/examples/file/main.o b/examples/file/main.o index 8691127d65e692d8f60abd1f87f47746a9a54089..339c0e40d75da6acb7f1f3cf9b6bdc2cad21791d 100644 GIT binary patch delta 334 zcmZ3(wt#(t0%ONSMd394jQreG{o?Y})RLs4)Wj713?PwORLtO*r;u7ylwYKfpPXD; zRFs;cP@a*Qld6zkkeZj7m#$Efk*bge6ky0;0D>2P{{R0U(fos?6iHRN# z^$ZM*KnX@5!3Lz6SQ!`up?onApM!xx8bot4Ferd%E(QiwAkE0cz@QDK4M5^Rb*3O1 zsLl#XI{;~rI#&=MXt)=M2CDN1(Li;fAbB33f+&yxI|D=f#*gugj82mSnUq<}fMP5_ tmhj{rCIK)ndGbP__#L45gvlqFl$mlEC%ro0g!J%0093oMi&48 delta 236 zcmZ3$zJ_gr0;9-8MPZTL#O&0x%$!t)3qY^h|kWz;0B_(fCMU- zyq<}5a|5FbBO~YJqfE+-wv%5nsk7Pw6?sh-WmabG0I~`u+cGON{a~1!#H=Q<0_fIE KBr||qFaQ8AQ5@O; diff --git a/examples/file/makefile b/examples/file/makefile index 1e9b309..270ac57 100644 --- a/examples/file/makefile +++ b/examples/file/makefile @@ -1,8 +1,10 @@ all: main -main: ../../file.o ../../std.o ../../path.o ../../string.o +main: ../../file.o ../../std.o ../../path.o ../../string.o main.o + ld -m elf_i386 main.o ../../file.o ../../std.o ../../path.o ../../string.o --output main + +main.o: fasm main.asm - ld -m elf_i386 main.o ../../file.o ../../std.o ../../path.o --output main ../../std.o: make -C ../.. std.o diff --git a/examples/network/makefile b/examples/network/makefile index 2973666..b73a1df 100644 --- a/examples/network/makefile +++ b/examples/network/makefile @@ -1,9 +1,11 @@ all: main -main: ../../std.o ../../string.o ../../network.o ../../dns.o ../../dnstoys.o - fasm main.asm +main: ../../std.o ../../string.o ../../network.o ../../dns.o ../../dnstoys.o main.o ld -m elf_i386 main.o ../../std.o ../../string.o ../../network.o ../../dns.o ../../dnstoys.o --output main +main.o: + fasm main.asm + ../../std.o: make -C ../.. std.o @@ -21,4 +23,3 @@ main: ../../std.o ../../string.o ../../network.o ../../dns.o ../../dnstoys.o clear: rm main.o main - diff --git a/file.o b/file.o index 5e8921379b3d31819dd1cf849a26b966d48559f4..c0392e7815281c468a18b19dd1a4fa32a2ec42db 100644 GIT binary patch delta 406 zcmeC-Ucfy;fw5zvVxCCzkAJ27$6YxXfFM3DDl$4E_VC93g^cw^KmkT31_oOw?F6Mg zK{O)+gCCG)VrO6ofr`gK`AJZI7KqQuz>p6WFN2C#L+M5+-43ODq4Z=3UC%HRDliX9 zABWOsKs3++mw+@A(A~G7;!i<*poOoY;-8`7|Dk+#pdOHi1faAOlvaY$I#AjgOlvbR zI6(zGp>!IM2Kl%EN^gYHyC+97M+-&(c_1Lfz{~&&tHqm-GFvk;UYN|ts?6vzS(R0t Xv1GC@tGa{;3j;$5SSf^n>SF)^9q%d} delta 385 zcmXZXtq(y_00r=K-}8LTW@EES#)LPsnIfQ=36dZv1Qh8h6zL_!Y}m~-6Zj-w8JfKo~%l=4nwYfU?pE09E!4<|cDn=Md0g zKVUzk4jt1ebv<3oSj_2(p0(-$SEUgIZtU+ms|z3OU+mw^ALcLht26WmBQ!znzd0b! zqDWgx{o^j((1Uc$PPDF)9x<4xDVL|GSrOtQ<5or#WXZBcPxdW40Ut2=FZCww!w*m5 BA*KKT diff --git a/src/file.asm b/src/file.asm index b80476e..43427cd 100644 --- a/src/file.asm +++ b/src/file.asm @@ -34,6 +34,13 @@ open: mov edx, O_DIRECTORY int 80h + cmp eax, -2 + jne @f + mov [ebp+2*4], dword 0 + postlude + ret + + @@: mov [fd], eax ; fstat