From b7590e11b031478da5386c01bfe523b7769e2362 Mon Sep 17 00:00:00 2001 From: german Date: Fri, 20 Mar 2026 14:44:15 +0400 Subject: [PATCH] Linter --- hello_user.exe | Bin 240 -> 220 bytes ntsys | Bin 40616 -> 40720 bytes ntsys-assembler.h | 94 +++++++++++++++++++++++++--------------------- 3 files changed, 52 insertions(+), 42 deletions(-) diff --git a/hello_user.exe b/hello_user.exe index a72c707acd8e468f8e185fd4734c84bb8b95a985..82a81a135dc5a4f444cd37ab94439245ba142857 100644 GIT binary patch delta 89 zcmeysc!!b8H|iq;149D?1JgtvSvGkFCLo$<8a}a4-jWe02!sscK$4L`2*d{S#2FbF Wxr7+u9FP`X21W)cCPgj=5DfrQW(d~+ delta 137 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 O`dNL~k0;X_2mBv;P916h delta 4143 zcmZ`+3se->8J<~o1DKTsVFe5cL??=7RfwP@!jaWYGnlD?h={H6(HKGn0TmOQL%JxK zI4*0jR}*8bkH)s1G^dSSlVjowd|@g{P)YT)KA^saKXR+n>+42c7;t{Ppttkm*&uODxa2T~QXofsLJZ#_8p9pzP0Pg? zA+2fM-(QW|{_&K&U)Vm`aR20ynOT9l5bM2SMPOZoR}_;1QIW0DVrby%uu7}7NVRQe ze@q_CDwD^DsJ2q}Omb}CNb=2L-kI(K_Y8ObjOp@`&i3SP&M-KI=ot zI$1021g17^W7UxB>qpTrEJyzr> zZGd*AOHr>mMtY=NZNitBuQti*QO)%^=icfn8-Hxs(VUtlvGbrKu^L{4sebFXga;^P zUD+cgX=PA<(w{jgM?In)Lcb`-QPwJ}7iHBW#W@D&<25oy(n29>@j-g5P@>UY1`0CZIFHI_073JemF+o zt&UX|1SGFGLi_or&$ws1pK;G|&pqr&^yrn>ipc`vz>5U*Lj*;JsqZZR)r!SCk zG%Glep+x9`#G$tbK8217q*`>xkw6-7l%eBwEd@w^8t?e=idXJ9IDIn6LFX3P?-X$e zaTb>h5`=@;v~>O+FgL|jD0kLDrx!x#ObgPv4L2Q&5Q)|Xt!~Eyx7~M+x!MioYc!{( zOJ1EHBSi+Ca%^_EXl7A)L&aGvEpMiHlhx%VdyivxVUyh)i)pIu5JuYju&k)J^dqXM z?fNOTZG;4Og0`~-3v(*9r^)sL7;2cdl!UkoMj7>Sd|(|{b4XO3Gr_xg{!zh~u8_*a z^c({9){=8nJ68*j<-YsJfTPu)1JhLWFfFEqO?`TbcR~!5{pr<_cWdNAYok-`=}Ou)-H}HM!&&vHS*ug11X&_^Q*A3T z(w0F(nW5f7`gdUE1~U?w;iQ2JCC+Dy zq`4Dq15?=i=?Pv=<*w-pQ#;(MCi}7`VXUaP5717?%}s4^=V`MkglCV+HAj+aY#%`` zPT?`fki-L#qSTP*J}_v9xWlhD%z%YY&i5UsgI)WVKON zztAhC`JqCqnf@u~KHGm#D5U)jAV+On^0wkzAVvC|7<(zwlXoLkPio^ZwPVenjc|8KN{ppE-zJqoG zp>+(~1V?%}9s8k<>NyR~o`I&Owu6nFQ5fD08r#D)kgb`q)pELrJzOwUNrZ6}N|6Sp zp29D%FbWsMBpgc=7?#EvmVRTu>vI|===Vscv+o-8XN5vfyUgA!7&T7B4$^j?z{&r# zsQ#D-UkG?bh#g0b*ft?3Wbts2#WR7Pf&t;IB|7)d^NKA6qq{kO&wTF3FL7U=Fs$F0 zxMVzW;J-2F1nc+p&vpk6{OmEScNCf#-lbfp!%5GB5%74bTO&TVWTN z1XO@&z}Y|w zU~Q{O61NSH2kZM#5Vsrsd2IgAqrI6}@m~f>&Y`~(+*3i^4fHRAO9|qv(%|ZByhF;xHNFpti2>!tYTl4Ob}by=+d#yT6|vwTRWm_EiR4D zs_G}{f@FC=PQcEu1UJNtG!qyDu9`KLP7*7axadiX^$eS~=rM6QQx`ooG~)v2za?ck zqFS`PF(4w$eXl}89D!!Y+CtcOWe#@0 z7c183{jF?;FE*a8hC#46&uv(|faRk05!(eRT@+D}>uG?+P;Zx5JEYy_-1n#uXl*Do zH5-enixuxBP61(rk}GziUd{Nt)UXX_SDqtubgiAJoE8a&jFx$r$&ozLPb=V=|;s zmUy9fr6KKmr|HsZB!$feQ<`mxi`j!~W8+tvQj6))tfH`q<*kji?SgbD+hvK4r;Blr z#V!a*ebx;;MLvdHGOc8oR`5fmx10B{zpPyoyR>rtvn6wvR?L5~Z0^$MDuuGjxzCqZ zmIq2+I~fv~$xeuYtPOdVK>ZtSA(nqV!j`->W{ud^D$glta diff --git a/ntsys-assembler.h b/ntsys-assembler.h index 0e86690..98068f0 100644 --- a/ntsys-assembler.h +++ b/ntsys-assembler.h @@ -74,25 +74,60 @@ int ntsys_asm_from_string(size_t* mempos, char* str, FILE* fp, byte_t cycle, nts return ntsys_run_asm_parser(parser); } -int ntsys_compile_asm(char* filename, char* asm_out) { - FILE* fp = fopen(filename, "r"); - if (fp == NULL) { - ntsys_error("Cannot open assembler file!"); - return EXIT_FAILURE; - } +void ntsys_compile_asm_stadion1(FILE* fp, size_t* lb_size) { char* st = NULL; - size_t mem_pos = 0; - size_t lb_size = 0; while ((st = ntsys_get_str(st, fp)) != NULL) { char* cp = st; ntsys_asm_save_t __save = create_ntsys_asm_save(cp); ntsys_asm_cache_t sv = create_ntsys_asm_cache(__save); char* str = ntsys_get_arg(sv); if (str[strlen(str) - 1] == ':') { - lb_size ++; + *lb_size += 1; } } free(st); +} + +int ntsys_compile_asm_stadion2( + FILE* fp, + FILE* tmp, + size_t lb_size, + size_t* mem_pos, + char** labels, + word_t* labels_pos, + size_t labels_count, + dword_t* fsz, + byte_t num + ) { + char* st = NULL; + while ((st = ntsys_get_str(st, fp)) != NULL) { + if (ntsys_asm_from_string(mem_pos, st, tmp, num, labels, labels_pos, &labels_count, fsz) != EXIT_SUCCESS) { + free(st); + fclose(fp); + fclose(tmp); + size_t i = 0; + while (i < lb_size) { + if (labels[i] != NULL) free(labels[i]); + i ++; + } + free(labels); + free(labels_pos); + return EXIT_FAILURE; + } + } + free(st); + return EXIT_SUCCESS; +} + +int ntsys_compile_asm(char* filename, char* asm_out) { + FILE* fp = fopen(filename, "r"); + if (fp == NULL) { + ntsys_error("Cannot open assembler file!"); + return EXIT_FAILURE; + } + size_t mem_pos = 0; + size_t lb_size = 0; + ntsys_compile_asm_stadion1(fp, &lb_size); char** labels = malloc(sizeof(char*) * lb_size); word_t* labels_pos = malloc(sizeof(word_t) * lb_size); size_t u = 0; @@ -109,22 +144,10 @@ int ntsys_compile_asm(char* filename, char* asm_out) { fclose(fp); return EXIT_FAILURE; } - while ((st = ntsys_get_str(st, fp)) != NULL) { - if (ntsys_asm_from_string(&mem_pos, st, tmp, 0, labels, labels_pos, &labels_count, &fsz) != EXIT_SUCCESS) { - free(st); - fclose(fp); - fclose(tmp); - size_t i = 0; - while (i < lb_size) { - if (labels[i] != NULL) free(labels[i]); - i ++; - } - free(labels); - free(labels_pos); - return EXIT_FAILURE; - } - } - free(st); + if (ntsys_compile_asm_stadion2( + fp, tmp, lb_size, &mem_pos, + labels, labels_pos, labels_count, &fsz, 0 + ) != EXIT_SUCCESS) return EXIT_FAILURE; fclose(tmp); rewind(fp); FILE* fw = fopen(asm_out, "wb"); @@ -133,25 +156,12 @@ int ntsys_compile_asm(char* filename, char* asm_out) { fclose(fp); return EXIT_FAILURE; } - while ((st = ntsys_get_str(st, fp)) != NULL) { - if (ntsys_asm_from_string(&mem_pos, st, fw, 1, labels, labels_pos, &labels_count, &fsz) != EXIT_SUCCESS) { - free(st); - fclose(fp); - fclose(fw); - size_t i = 0; - while (i < lb_size) { - if (labels[i] != NULL) free(labels[i]); - i ++; - } - free(labels); - free(labels_pos); - return EXIT_FAILURE; - } - } + if (ntsys_compile_asm_stadion2( + fp, fw, lb_size, &mem_pos, + labels, labels_pos, labels_count, &fsz, 1 + ) != EXIT_SUCCESS) return EXIT_FAILURE; fflush(fw); - free(st); fclose(fp); - fclose(fw); size_t i = 0; while (i < lb_size) { if (labels[i] != NULL) free(labels[i]);