diff --git a/ASM.md b/ASM.md new file mode 100644 index 0000000..99e1513 --- /dev/null +++ b/ASM.md @@ -0,0 +1,10 @@ +# Assemly NTSYS +Это справочник по ассемблеру в **NTSYS**. Тут представлены основные комманды и описание синтаксиса. +## Операторы +Основной программной единицей является оператор. Это одно из зарезервированных слов. Названия операторов те же, что и в [BINCOM](https://gitlabor.ru/German/ntsys/src/branch/main/BINCOM.md), но в нижнем регистре. +## Метки +Метки используются для относительного перехода в любое место программы. Они состоят из алфавитно-цифровых символов, двоеточия и переноса строки: +```asm +имя_метки: + ; ... код +``` \ No newline at end of file diff --git a/README.md b/README.md index e61bcf1..c83ee1c 100644 --- a/README.md +++ b/README.md @@ -5,5 +5,7 @@ > Это бета-версия. Документация ещё не готова. - [Инструкция по установке](https://gitlabor.ru/German/ntsys/src/branch/main/INSTALL.md) - [Справочник по опциям](https://gitlabor.ru/German/ntsys/src/branch/main/OPTIONS.md) -- [Бинарная структура](https://gitlabor.ru/German/ntsys/src/branch/main/BINARY.md) -- [Двоичные коды комманд](https://gitlabor.ru/German/ntsys/src/branch/main/BINCOM.md) \ No newline at end of file +- [Двоичные коды комманд](https://gitlabor.ru/German/ntsys/src/branch/main/BINCOM.md) +- [Ассемблер](https://gitlabor.ru/German/ntsys/src/branch/main/ASM.md) +- [Примеры](https://gitlabor.ru/German/ntsys/src/branch/main/EXAMPLES.md) +- [Бинарная структура](https://gitlabor.ru/German/ntsys/src/branch/main/BINARY.md) \ No newline at end of file diff --git a/asm-savers.h b/asm-savers.h index 64b8a0a..3dce9ff 100644 --- a/asm-savers.h +++ b/asm-savers.h @@ -48,6 +48,7 @@ char* ntsys_get_str(char* ptr, FILE* fp) { while (i < strlen(ptr)) { if (ptr[i] == '"' && ptr[((i == 0) ? 1 : i) - 1] != '\\') {isStr = !isStr;} if ((ptr[i] == ';' || ptr[i] == '#') && isStr == 0) ptr[i] = '\0'; + if ((ptr[i] == ',') && isStr == 0) ptr[i] = ' '; i ++; } return ptr; @@ -396,6 +397,7 @@ int __ntsys_arg_function_loader(ntsys_argument_parser_t* parser) { if (select_argument(parser) == EXIT_FAILURE) return EXIT_FAILURE; } if (parser->is_rewrite == 0) *parser->file_size = ftell(parser->fp) + 1; + fflush(parser->fp); return EXIT_SUCCESS; } diff --git a/example.asm b/example.asm index cba1995..b977192 100644 --- a/example.asm +++ b/example.asm @@ -1,4 +1,4 @@ main: ; Метка main push.string "Hello, world!\n" ; Записываем строку - push byte 0x00 ; Запись номера SYSCALL + push byte, 0x00 ; Запись номера SYSCALL syscall ; Системный вызов \ No newline at end of file diff --git a/example.exe b/example.exe new file mode 100644 index 0000000..0bf753d Binary files /dev/null and b/example.exe differ diff --git a/ntsys b/ntsys index d6bc61f..34d9cc1 100755 Binary files a/ntsys and b/ntsys differ