From f2773b160827bd563c5baac6a98d70b462604414 Mon Sep 17 00:00:00 2001 From: german Date: Wed, 11 Mar 2026 18:30:46 +0400 Subject: [PATCH] Virual stack --- -d | 2 ++ BINCOM.md | 7 +++++- EXAMPLES.md | 8 +++---- hello.asm | 4 ++++ hello.exe | Bin 0 -> 28 bytes hello_world.hex | 3 ++- ntfiles.h | 54 ++++++++++++++++++++++++++++++++++++++++++---- ntsys | Bin 40144 -> 40584 bytes ntsys-assembler.h | 8 ++++++- set_mov.asm | 16 ++++++++++++++ set_mov.exe | Bin 0 -> 44 bytes 11 files changed, 91 insertions(+), 11 deletions(-) create mode 100644 -d create mode 100644 hello.asm create mode 100644 hello.exe create mode 100644 set_mov.asm create mode 100644 set_mov.exe diff --git a/-d b/-d new file mode 100644 index 0000000..fb28eea --- /dev/null +++ b/-d @@ -0,0 +1,2 @@ +00000000: 4d5a 1d00 0000 8000 0248 656c 6c6f 2c20 MZ.......Hello,  +00000010: 776f 726c 6421 0a00 0001 001a      world!...... diff --git a/BINCOM.md b/BINCOM.md index f2df629..898795f 100644 --- a/BINCOM.md +++ b/BINCOM.md @@ -106,4 +106,9 @@ void (*operations[])(void) = { > Она принимает количество элементов в качестве параметра. > Элементы сдвигаются влево. - **SWAP 0x1B** - Swap (**ARG1 ARG2**). Формат: **0x1B РАЗМЕР** -- **COPY 0x1C** - Скопировать последний элемент (**ARG**). Формат: **0x1C РАЗМЕР** \ No newline at end of file +- **COPY 0x1C** - Скопировать последний элемент (**ARG**). Формат: **0x1C РАЗМЕР** +- **SET 0x1D** - Установить указатель виртуального стека (**ARG**). Формат: **0x1D** +- **MOV 0x1E** - Переключить стек (виртуальный/обычный). Формат: **0x1E** +## Функции +- **CALL 0x1F** - Аналогична инструкции **JMP**, но сохраняет стек вызовов (32 элемента). Формат: **0x1F** +- **RET 0x20** - Возврат из функции. Формат: **0x20** \ No newline at end of file diff --git a/EXAMPLES.md b/EXAMPLES.md index e198ca8..9a9d972 100644 --- a/EXAMPLES.md +++ b/EXAMPLES.md @@ -5,10 +5,10 @@ ntsys --asm имя_файла.asm --out имя_файла.exe --mem 128 ``` ## Hello, world! ```asm -main: ; Метка main - push.string "Hello, world!\n" ; Записываем строку - push byte, 0x00 ; Запись номера SYSCALL - syscall ; Системный вызов +main: ; Метка main + push.string "Hello, world!\n" ; Записываем строку + push byte, 0x00 ; Запись номера SYSCALL + syscall ; Системный вызов ``` ## Выводим имя пользователя ```asm diff --git a/hello.asm b/hello.asm new file mode 100644 index 0000000..90c13cb --- /dev/null +++ b/hello.asm @@ -0,0 +1,4 @@ +main: ; Метка main + push.string "Hello, world!\n" ; Записываем строку + push byte, 0x00 ; Запись номера SYSCALL + syscall ; Системный вызов \ No newline at end of file diff --git a/hello.exe b/hello.exe new file mode 100644 index 0000000000000000000000000000000000000000..65b9e18bdb75bd843faead1e3c7aa455ffa93f6f GIT binary patch literal 28 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 ZSM5?=PjAl>UQPG=g{fi}o+Yg7_J0?1@2mg- diff --git a/ntsys-assembler.h b/ntsys-assembler.h index 1c09ffb..e5e88f4 100644 --- a/ntsys-assembler.h +++ b/ntsys-assembler.h @@ -12,7 +12,7 @@ * XX - шестнадцатиричные данные */ -const size_t ntsys_command_count = 0x1E; +const size_t ntsys_command_count = 0x22; char* ntsys_asm_table[] = { "push=00:T:D", @@ -53,6 +53,12 @@ char* ntsys_asm_table[] = { "swap=1B:T", "dup=1C:T", + "set=1D", + "mov=1E", + + "call=1F", + "ret=20", + "pass=" }; diff --git a/set_mov.asm b/set_mov.asm new file mode 100644 index 0000000..6e57d05 --- /dev/null +++ b/set_mov.asm @@ -0,0 +1,16 @@ +start: + push db main + jmp + +log: + push byte 0x00 + syscall + ret + +main: + push dw 0x20 + set + push.string "Hello, world!\n" + push db log + call + \ No newline at end of file diff --git a/set_mov.exe b/set_mov.exe new file mode 100644 index 0000000000000000000000000000000000000000..fa405f6e5d1c60ba0d351ab37cbbe5d40e1e4744 GIT binary patch literal 44 ycmeZ`(q&*^XkcJq;$q-sU}TU|U|>>UkY(~n&B@8vQ7F$Z%1Ke=0!p(o$O8a|-Ug!p literal 0 HcmV?d00001