L1VM
![]() |
reliable - fast - secure - type safe - unique - multi platform |
$ l1vm hello -q Hello world! |
|
Donate: ![]() |
Computing at a scale. Use the MPFR module for arbitrary number precision math. Scale from SBCs to desktop PCs and beyond.
Powerful modules are available at your fingertips. You can develop your own modules to fit your needs. The L1VM is available for: Linux (x86_64, AARCH64), OpenBSD, FreeBSD, DragonFly BSD, Windows (10, 11) via WSL or native MSYS2, macOS and Haiku OS. On the Raspberry Pi the GPIO pins and the serial port can be used via the modules. The L1VM is open source under the GPL. The source code is on GitHub: github.com/koder77/l1vm. |
Course1: Hello world, if, if+, else2: switch 3: math 4: functions 5: input 6: strings 7: loops 8: arrays 9: logical operators 10: cli arguments 11: preprocessor 12: assembly VOL I 13: assembly VOL II 14: assembly VOL III 15: assembly VOL IV 16: assembly VOL V 17: multithreading L1VM manual PDF L1VM manual EPUB L1VM advanced PDF L1VM code details PDF |
Installation of L1VMYou can clone my GitHub repository with:git clone http://github.com/koder77/l1vm.gitAnd then build it with one of the many build scripts. Or you can copy the binaries for Linux x64 or Windows x64 below into the source code repo. Linux x86_64 binariesI made static build binaries for Linux x86_64. They should run on any 64 bit Linux system. The current L1VM 3.1.8 builds are here: L1VM Linux binaries.I did include all modules and their depedencies, so the binaries should run on any Linux system. Here is the sha256 sum of the archive: 72fb1e7532afd5ed49c355e2311bf06f389d10c4dbc80287ec223a6c40b2d7e8 l1vm-linux-x86-64.zip Windows x86_64 binariesI made a port to Windows MSYS2. You need to install MSYS2 to use this! So now the L1VM can run natively on Windows without the need to install the WSL. The 3.1.8 release is here: L1VM Windows MSYS2 binaries.Here is the sha256 sum of the archive: eead135f77b50840d902eefe440a7337433be0ad530c2c48ceb44f5f09b297cf l1vm-windows-x86-64.zip |
.data Q, 1, zero @, 0Q, 0 B, 13, hello @, 8Q, "Hello world!" Q, 1, helloaddr @, 21Q, 8Q .dend .code :main loada zero, 0, 0 loada helloaddr, 0, 1 intr0 6, 1, 0, 0 intr0 7, 0, 0, 0 intr0 255, 0, 0, 0 rts .cend |
The modulesThe L1VM can be expanded by modules (shared libraries). A module has an own API to access the functions from the VM. Here is the list of modules:Cells - linked neural networks with FANN library ciphersaber - encrypt/decrypt functions crypto - libsodium encrypt/decrypt functions endianess - convert to big endian, or little endian functions fann - FANN neural networks file - file module - read/write files filetools - file functions like copy, create directory, etc. genann - neural networks module gpio - Raspberry Pi GPIO module math - some math functions math-nofp - math module for use without FPU math-vect - math on arrays functions mem - memory allocating for arrays and vectors mem-obj - memory functions to store different variables into one memory array mem-vect - C++ vector memory library mpfr-c++ - MPFR floating point big num library nanoid - nano ID, create unique IDs net - TCP/IP sockets module pigpio - Raspberry Pi GPIO module process - start a new shell process rs232-libserialport - RS232 serial port using libserialport rs232 - RS232 serial port module sdl 2.0 - graphics primitves module, like pixels, lines..., and GUI with buttons, lists, etc. string - some string functions time - get time and date |
Here is a GUI example: pov-edit
The gadgets are drawn by my SDL graphics/GUI module.