From a70bb88e5aa143c0d7d02208f6a5847abe188c1b Mon Sep 17 00:00:00 2001 From: german Date: Fri, 6 Mar 2026 20:13:15 +0400 Subject: [PATCH] Correct --- BINCOM.md | 2 +- asm-savers.h | 20 +++++++++++++++++++- ntsys | Bin 27336 -> 27336 bytes ntsys-assembler.h | 9 +++++++-- out.exe | Bin 7 -> 25 bytes 5 files changed, 27 insertions(+), 4 deletions(-) diff --git a/BINCOM.md b/BINCOM.md index 295c33b..2cb8620 100644 --- a/BINCOM.md +++ b/BINCOM.md @@ -46,7 +46,7 @@ void (*operations[])(void) = { - **ADD 0x03** - Сложение **ARG1 + ARG2** - сначала берётся **ARG1**. Формат: **0x03 РАЗМЕР** - **SUB 0x04** - Вычитание **ARG1 - ARG2** - сначала берётся **ARG1**. Формат: **0x04 РАЗМЕР** - **MUL 0x05** - Умножение **ARG1 * ARG2** - сначала берётся **ARG1**. Формат: **0x05 РАЗМЕР** -- **MUL 0x06** - Деление **ARG1 / ARG2** - сначала берётся **ARG1**. Формат: **0x06 РАЗМЕР** +- **DIV 0x06** - Деление **ARG1 / ARG2** - сначала берётся **ARG1**. Формат: **0x06 РАЗМЕР** ### Логика - **NOT 0x07** - Инвертирование **NOT ARG**. Формат: **0x07 РАЗМЕР** - **SHR 0x08** - Сдвиг вправо **ARG1 >> ARG2** - сначала берётся **ARG1**. Формат: **0x08 РАЗМЕР** diff --git a/asm-savers.h b/asm-savers.h index d7a71bf..62e5d1f 100644 --- a/asm-savers.h +++ b/asm-savers.h @@ -275,12 +275,28 @@ static void __input_data(ntsys_argument_parser_t* parser, byte_t* mode) { } +static void __input_string(ntsys_argument_parser_t* parser) { + ntsys_exit_if_error(parser) { + ntsys_error("Cannot find argument!"); + return; + } + char* str = parser->string; + size_t i = 0; + while (i < strlen(str)) { + fputc(str[i], parser->fp); + i ++; + } + fputc('\0', parser->fp); +} + static int __arg_writer(char* str, ntsys_argument_parser_t* parser, byte_t* mode) { if (str[0] == ':') { if (str[1] == 'T') { __input_datatype(parser, mode); } else if (str[1] == 'D') { __input_data(parser, mode); + } else if (str[1] == 'S') { + __input_string(parser); } } else { byte_t x = strtol(str, NULL, 16); @@ -312,6 +328,7 @@ static int select_argument(ntsys_argument_parser_t* parser) { if (str[strlen(str) - 1] == ':' && parser->is_rewrite == 0) { return __load_label(parser); } + if (str[strlen(str) - 1] == ':') return EXIT_SUCCESS; char buf[64]; char** table = parser->table; while (i < parser->table_length) { @@ -339,7 +356,8 @@ static int select_argument(ntsys_argument_parser_t* parser) { i ++; } ntsys_error("Undefined operator!"); - /* Обязательно заменить на EXIT_FAILURE! EXIT_SUCCESS нужен для отладки! */ + /* WARNING! Обязательно заменить на EXIT_FAILURE! EXIT_SUCCESS нужен для отладки! */ + puts(str); return EXIT_SUCCESS; } diff --git a/ntsys b/ntsys index 69edfffc59640db975d97e6f0691300fb4647b40..40f64f99030c80b33cf84f2638b859ed9846e0ab 100755 GIT binary patch delta 4788 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 bZ7ob55cb#7w}n$8%d!ofvg#2_4kS; delta 4556 zcmaJ_eNmOd+HHvI8!rzj--{*~snVTX*(8^g;-u_RI29Yn9|Hh>+w1lH4lE2CK5}jH=evhN&5% z_jR7*oW8v1LSJ=k@=3|R!Wv5!rox7P_ln9yF~+OKC;7nTC7*TqvW~lCRdK?(J-v%ZaYrFT{Lxa40X`G@y&VC|C6DBnY0@?}{i`BLu34r?r@JO`$s#Vtwo zt+2RKy+QIv)kPp)zpY*5xP1aFlUtN_%@A9tkf!S!5*zMeMM)DqaXdvk1wmbm5_dVQ zw`7&L@5^$C-tS=vuYx3ZD(p1Ytsmf@e)|J*D9NV~m68p%uGTsw1EIul?vIlD!G3_n zIYq#FPG7Z2+&iHB4Qdy6I(;iSCG$G`G_;7`Tj2)z;#?kIQlVTOfjo&`Gf2d}0&%w6C@r zm;A%xC3eq)_9ga*><*!3W{9xY4fcxO`H+gM+sRSgpur=0>olSi-ynF= zo1l*bv7wH__t#n@G}n7!!YMb?7MDW+(ssU>hvc;`b?0HNBk(`2SNJN zAkAyrno}WqKiBM{HbO!2_-!%3p+1eFpnWLC@R`8w3P{s$>&KZNQtXGjt7m5!J*z0KoJUEoVOPrJ2hfmVNu zzD&|;_S?+oitic9E2)mktI)LX*{&jlu0e!g&_bZ^z_VHigMFfRE0J}B1EN>fN0&wK zohV1(9WpU#CMM1fn*!KS`|isFsr>U)aF$QAjhJ0rj~vL@JaW)CW;h3ZkOj)w(v(Qg zbs84Hv3C3d)p`^rvEeRodJEBtdJBC{$~XNgptyCxP7?4GUN1QNo?hDFYc#*C%`em3 zhq>bWhBEy;k8Y3qMOAY!7I5AsW3252wdRzUp%gd>YTtlnK0xM$;Oh>HRhbUCbiiSi5C>P;h^1ZfIc4V+-Kqs^R*EZHv}-Y1I~m3k@lX_>7;7z* ze{jh`k2R7XK3uGG_E;pOd-hD>sXlgdTI?O0u4;LyK13-oe66a8L&?(cs*(bfe6`ki zCE;s!bH*gLGHvWFttUX%x0Teiz^SN(r@IqE$0?P|$>&S&euP|CEOAdoNrse|h8fG3}2%3g4^ z+ov(57Y1eKF*Y^J;dutP0CsG_nIF1IEr{^@YGJ7C<6Aw6)j6GLSH8b0HjWR_`s1K^ZD66-(K`lrHb(l+3W zdX?n$-6n^)%Nmy4BKfj&!0Z+9YscN|kWc5yUH4*-_F~0}unHe-!}~yNz42}+@$)FR zF1cUwXNv}`cmp(WM^GV3;YcFa@<&pzpjtqb=)>*QQQ3pITa+dm`?9~GE$IRGV~BvS zcz_h~Umn2K=kg)qz*xN%-+>|0iCc82Fq&8^jN-BLIVsn1oYJ1)DVkX#h5xR`~K{g zpr=^Aq?5L|^?j1sKeXdJ;KWX_@o+d*`q-c6S}lupmmQD}x$I!?&b=G2+jZM>-sDR; z?qA)ix&fc~kdHrP9Lf)kYe&c*3(g-1qO-16(pig7 z4I5t&nQcIoa4BgINp|293+{qWal{?OXAoR!2uCd)&z8bN3F>PPkr=R6Be)GA9Q~M2 zM%`Zy;bwq)i@jSAIjI7b-%Jvr)*Ml4HciH`4AMdNO+ie;WYj=sv|G3$V; zhO?>S7i_?l#yePYVJE+ajW3EpizgR7!N)XjDq796_k`%?oO{X*;abFSdyXwFp2%8C z4)RG%URWS>IM|Ve$Aq4FY|ElVK8KxHGz*gO(ud*mccq(!o|NVZWvloJ6c#