From a81dd96b18032685d9df3c01a16b26db72e442dc Mon Sep 17 00:00:00 2001 From: Yuuki Wesp Date: Fri, 22 May 2020 21:10:44 +0300 Subject: [PATCH] Release 70.800 --- acc/acc.csproj | 2 +- etc/visual-code/AncientAssembly/.vsixmanifest | 2 +- etc/visual-code/AncientAssembly/README.md | 209 ++---------------- etc/visual-code/AncientAssembly/package.json | 16 +- .../AncientAssembly/syntaxes/asm.tmLanguage | 10 +- .../AncientAssembly/syntaxes/neeed.js | 4 +- .../AncientAssembly/syntaxes/snippets.json | 36 +++ .../Ancient.Compiler.Service.csproj | 2 +- .../Ancient.Runtime.Context.csproj | 2 +- submodules/runtime | 2 +- vm/csharp/vm.csproj | 2 +- 11 files changed, 74 insertions(+), 213 deletions(-) diff --git a/acc/acc.csproj b/acc/acc.csproj index 2e416a4..d765ca8 100644 --- a/acc/acc.csproj +++ b/acc/acc.csproj @@ -5,7 +5,7 @@ net5.0 flame.compiler win10-x64;osx.10.14-x64;linux-x64 - 0.70.504-beta + 0.70.800 Yuuki Wesp flame.compiler Yuuki Wesp (C) 2020 diff --git a/etc/visual-code/AncientAssembly/.vsixmanifest b/etc/visual-code/AncientAssembly/.vsixmanifest index b968d82..90f861b 100644 --- a/etc/visual-code/AncientAssembly/.vsixmanifest +++ b/etc/visual-code/AncientAssembly/.vsixmanifest @@ -1,7 +1,7 @@ - + Ancient Assembly Ancient Assembly developmemnt environment (8bit cpu) ancient,8bit,assembly,8bit assembly,__ext_.asm,__ext_.ancient diff --git a/etc/visual-code/AncientAssembly/README.md b/etc/visual-code/AncientAssembly/README.md index d967f84..071a98c 100644 --- a/etc/visual-code/AncientAssembly/README.md +++ b/etc/visual-code/AncientAssembly/README.md @@ -54,206 +54,29 @@ +--- -## History +> Ancient VM proof of concept of the language, toolskit, virtual machine and ecosystem +> A VM with 50+ instructions, SIMD Vector calculation, modularity, language and compiler, cli tool and package register of modules and extensions -Once i read an [article on Wikipedia](https://en.wikibooks.org/wiki/Creating_a_Virtual_Machine/Register_VM_in_C) about writing custom VM and interpreter bytecode. -So, i wanted to give it a try. -Initially, i planned to write a 4-bit CPU emulator, afterwards i wrote it - but with the development of the source code, bit rate of instructions increased, and emulator has a programming language that is very similar to Assembler language (and CSS, yeah). -It was a wonderful experience, i faced unusual problems and came up with quite unusual solutions. -Since then, i continued to develop and improve different kinds of features in this project afterwards. -I do not pursue any goals (except of course vm speed and language usability), and i do not expect my VM to be useful - but if you have any ideas on how to improve the project Iā€™d be happy to hear from you. +--- +# šŸ“” Installation -##### Env flags -```yaml -- VM_TRACE : 1\0 - enable or disable trace logging (default 0) -- VM_ERROR : 1\0 - enable or disable error logging (default 1) -- VM_KEEP_MEMORY : 1\0 - when halt cpu disable or enable clearing memory table (default 0 - clearing) -- VM_MEM_FAST_WRITE: 1\0 - enable or disable fast-write mode to devices (see fast-mode addressing) -- C69_BIOS_HPET : 1\0 - enable using hardware hper timer (default 0) -- VM_WARMUP_DEV : 1\0 - enable warm-up devices on plug-connect (default 1) -- VM_SHUTDOWN_DEV : 1\0 - enable shutdown devices on halting processor (default 1) -- VM_SYM_ENCODING : "utf8" - set encoding of debug symbols (default "IBM037") +```bash +$ yarn global add @rune/cli +$ rune install vm ``` -##### Memory table: - -example: -```assembler -.ldx &(0x11) <| $(0x0) - disable trace -``` -list: -```yaml -- 0x11 : 1\0 - enable or disable trace logging (default 0) -- 0x12 : 1\0 - enable or disable error logging (default 1) -- 0x13 : 1\0 - when halt cpu disable or enable clearing memory table (default 0 - clearing) -- 0x14 : 1\0 - enable or disable fast-write mode to devices (see fast-mode addressing) -- 0x18 : 1\0 - enable float-mode -- 0x19 : 1\0 - enable stack-forward flag -- 0x20 : 1\0 - control stack flag (north flag) -- 0x21 : 1\0 - control stack flag (east flag) -- 0x22 : 1\0 - bios read-access flag -``` - -##### Bios table: - -###### public memory [READ]: -```yaml -- 0x00 - return current ticks (u32) -- 0x01 - return hpet enabled or not -- 0x02 - return memory channel -- 0xFX - private memory randge -``` -###### private memory [READ]: -```yaml -- 0xF1 : return hpet enabled or not -- 0xF2 : return use virtual stack forwarding or not -- 0xF3 : return use forward in standalone memory sector or not -- 0xF6 : return using guarding with violation memory write or not (default bios_guard_flag has enabled) -``` - -###### public\private memory [WRITE]: - -```yaml -- 0x1 : 1\0 - set hpet use or not (default value depends on the firmware) -- 0xA : reseting hpet and system timers -- 0xD : call system interrupts for N-value ms -- 0xC : call clearing RAM (need enabled bios_guard_flag, and disabled southFlag) -- 0xF : set at private memory range value (need southFlag) -``` - - -##### remarks: -###### fast-mode addressing -`Write speedUp to device memory (x12~ times), but disables the ability to write to certain sections of device memory.` -###### READ\WRITE operation for bios -`Need southFlag enabled for READ\WRITE operation for private memory, otherwise will be calling CorruptedMemoryException and halting cpu` -###### bios_guard_flag -`Some memory segments are not allowed to READ\WRITE operation when bios_guard_flag is enabled ` -###### create external function -`todo :)` -##### Command docs - -```csharp --- legend: - -- cell_id - memory cell in processor cache -- value - hex number -- &() - reference cell id -- $() - value -- ![~name] - reference label define -- <| and |>- pipe operator -- ~- - when operator -``` - - -```csharp -// refer and jumper - -// set reference current program offset to cell_id -.ref.t &(cell_id) -// read from cell_id offset program and go to -.jump.t &(cell_id) - -// other jumper -.jump.e &(cell_id) ~- &(0x9) &(0x6) // if 0x9 cell value more or equal 0x6 cell value -.jump.g &(cell_id) ~- &(0x9) &(0x6) // if 0x9 cell value more 0x6 cell value -.jump.u &(cell_id) ~- &(0x9) &(0x6) // if 0x9 cell value less 0x6 cell value -.jump.y &(cell_id) ~- &(0x9) &(0x6) // if 0x9 cell value less or equal 0x6 cell value - +# šŸ’» OS Support -// manage processor +OS | Version | Architectures +------------------------------|-------------------------------|---------------- +Windows 10 | 1607+ | x64, ARM32 +OSX | 10.14+ | x64 +Linux | | x64, ARM32, ARM64 -.halt // halting cpu -.warm // warm-up cpu - -// etc - -.swap &(source) &(target) // swap value - -// math instruction -.mul &(result_cell) &(cellValue1) &(cellValue2) -.add &(result_cell) &(cellValue1) &(cellValue2) -.div &(result_cell) &(cellValue1) &(cellValue2) -.sub &(result_cell) &(cellValue1) &(cellValue2) -.pow &(result_cell) &(cellValue1) &(cellValue2) -.sqrt &(result_cell) &(cellValue) -// advanced math (need float-mode) (advanced math operation send result to stack) -.abs &(cell_value) -.acos &(cell_value) -.atan &(cell_value) -.acosh &(cell_value) -.atanh &(cell_value) -.asin &(cell_value) -.asinh &(cell_value) -.cbrt &(cell_value) -.cell &(cell_value) // celling -.cos &(cell_value) -.cosh &(cell_value) -.flr &(cell_value) // floor -.exp &(cell_value) // exponent -.log &(cell_value) -.log10 &(cell_value) -.tan &(cell_value) -.tanh &(cell_value) -.sin &(cell_value) -.sinh &(cell_value) -.trc &(cell_value) // truncate -.bitd &(cell_value) // bit decrement -.biti &(cell_value) // bit increment -.atan2 &(cell_value) &(cell_value) -.min &(cell_value) &(cell_value) -.max &(cell_value) &(cell_value) - - - -.lpstr !{"test string"} // stage to stack it string -.unlock &(0x5) str // pull from stack and stage in 0x5 cell and make 'str' type - - -// init evaluation stack and pulling data from normal stack -.locals init #( - [0x0] u32 // int - [0x1] u2 // bool -) -// call external function (see 'create external function') -call !{some_function(u32, u8)} -.prune // clear evaluation stack - - -// manage device and etc -.mvt &($device_id) &(action_id) <| $(value) // push raw value to device_id.action_id in bus -.mvd &($device_id) &(action_id) <| &(cell_value) // push value from cell to device_id.action_id in bus -.mvx &($device_id) &(action_id) <| &(value_ref) // encode memory and send char-data to device - -// float-point -.ldx &(0x18) <| $(0x1) // set float mode -// remark: all math operation support float mode -.orb &(n) // grub next 'n'-count values and stage to stack -.val @float_t("10.4") // encode float value -.pull &(target_cell) // read from stack float value and insert to target_cell - -// debugger -.brk.s // standard break - now break -.brk.n // break on next cycle execute -.brk.a // break on after next cycle execute - -// other -.inc &(cell) // cell++ -.dec &(cell) // cell-- -// raw write instruction -.raw 0xABCDEFE0 // (warm) - -.mvj &($device_id) &(action_id) <| @string_t("test string") // cast string to mvt instruction -``` - -[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2F0xF6%2Fancient_cpu.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2F0xF6%2Fancient_cpu?ref=badge_large) - -

- - - -

+# Documentation +See [Docs](https://docs.vm.runic.cloud) diff --git a/etc/visual-code/AncientAssembly/package.json b/etc/visual-code/AncientAssembly/package.json index cf83e56..c6db02d 100644 --- a/etc/visual-code/AncientAssembly/package.json +++ b/etc/visual-code/AncientAssembly/package.json @@ -1,8 +1,8 @@ { "name": "ancient-asm", - "displayName": "Ancient Assembly", - "description": "Ancient Assembly developmemnt environment (8bit cpu)", - "version": "0.70.2", + "displayName": "Ancient VM Language", + "description": "Ancient VM developmemnt environment", + "version": "0.70.4", "icon": "images/icon.png", "galleryBanner": { "color": "#18c7b1", @@ -25,9 +25,13 @@ "Programming Languages" ], "keywords": [ - "ancient", - "8bit", - "assembly" + "assembly", + "virtual-machine", + "cli", + "intermediate-language", + "il", + "assembler-language", + "language" ], "activationEvents": [ "onLanguage:asm", diff --git a/etc/visual-code/AncientAssembly/syntaxes/asm.tmLanguage b/etc/visual-code/AncientAssembly/syntaxes/asm.tmLanguage index 4339868..f249e04 100644 --- a/etc/visual-code/AncientAssembly/syntaxes/asm.tmLanguage +++ b/etc/visual-code/AncientAssembly/syntaxes/asm.tmLanguage @@ -52,7 +52,7 @@ match - (?i)((^|\s+)\~label|.warm|init|.prune|.halt|\s+ert)\b + (?i)((^|\s+)\~label|#use|.sig|@|.ret|.warm|init|.prune|.halt|\s+ert)\b name keyword.control.error @@ -143,11 +143,11 @@ name string.quoted.double - + begin - % + !{ end - % + } name string.quoted.double @@ -201,7 +201,7 @@ match - ([uif]((2|8|16|32|64|128)))\b + (str|void|[uif]((2|8|16|32|64|128)))\b name support.type.asm diff --git a/etc/visual-code/AncientAssembly/syntaxes/neeed.js b/etc/visual-code/AncientAssembly/syntaxes/neeed.js index 771b3a5..a08b06f 100644 --- a/etc/visual-code/AncientAssembly/syntaxes/neeed.js +++ b/etc/visual-code/AncientAssembly/syntaxes/neeed.js @@ -3,6 +3,4 @@ .wtd .rfd .jump.p -.page -.call.i -.prune \ No newline at end of file +.page \ No newline at end of file diff --git a/etc/visual-code/AncientAssembly/syntaxes/snippets.json b/etc/visual-code/AncientAssembly/syntaxes/snippets.json index d0ac60b..95fc950 100644 --- a/etc/visual-code/AncientAssembly/syntaxes/snippets.json +++ b/etc/visual-code/AncientAssembly/syntaxes/snippets.json @@ -1,4 +1,40 @@ { + ".sig": { + "prefix": [ + ".sig" + ], + "body": [ + ".sig @${0:functionName}({1:types}) -> {2:returnType}" + ], + "description": "Signature function defined operation" + }, + ".call.i": { + "prefix": [ + ".call.i" + ], + "body": [ + ".call.i !{${0:target}}" + ], + "description": "Call function operation" + }, + ".prune": { + "prefix": [ + ".prune" + ], + "body": [ + ".prune" + ], + "description": "prune operation" + }, + ".ret": { + "prefix": [ + ".ret" + ], + "body": [ + ".ret" + ], + "description": "return operation" + }, ".abs": { "prefix": [ ".abs" diff --git a/libs/Ancient.Compiler.Service/Ancient.Compiler.Service.csproj b/libs/Ancient.Compiler.Service/Ancient.Compiler.Service.csproj index 3463a08..768bb2a 100644 --- a/libs/Ancient.Compiler.Service/Ancient.Compiler.Service.csproj +++ b/libs/Ancient.Compiler.Service/Ancient.Compiler.Service.csproj @@ -13,7 +13,7 @@ MIT Yuuki Wesp Ancient Project - 0.70.701.120 + 0.70.800 diff --git a/libs/Ancient.Runtime.Context/Ancient.Runtime.Context.csproj b/libs/Ancient.Runtime.Context/Ancient.Runtime.Context.csproj index f46f408..3492b6c 100644 --- a/libs/Ancient.Runtime.Context/Ancient.Runtime.Context.csproj +++ b/libs/Ancient.Runtime.Context/Ancient.Runtime.Context.csproj @@ -4,7 +4,7 @@ Library netcoreapp3.1 - 0.70.675.37 + 0.70.800 true https://raw.githubusercontent.com/ancientproject/cli/master/resource/icon.png https://github.com/0xF6/ancient_cpu diff --git a/submodules/runtime b/submodules/runtime index 64258c1..6858ad5 160000 --- a/submodules/runtime +++ b/submodules/runtime @@ -1 +1 @@ -Subproject commit 64258c1f55e4aa89ee2db0c651ef894803062fdd +Subproject commit 6858ad5e3658d795856beed74919bf5140b39ad5 diff --git a/vm/csharp/vm.csproj b/vm/csharp/vm.csproj index b35ca13..54a940a 100644 --- a/vm/csharp/vm.csproj +++ b/vm/csharp/vm.csproj @@ -11,7 +11,7 @@ win10-arm64; win10-arm; - 0.70.756-beta + 0.70.800 true Yuuki Wesp (C) 2020