plxvm/doc/plx.md

5 lines
1.4 KiB
Markdown

PLX is an extended programming language and a Virtual Machine (VM) for multi-tasking on embedded systems with very low resources (at least 32 kB ROM, 8 kB RAM). The VM is optimized on architecture level, but not on programming level (e.g., by using native machine code optimizations), providing high portability across different mirco-controllers and computer architectures. Although, not optimized on programming level, the PLX-VM outperforms standard python (3) implementations by at least 30% better computational performance.
The PLX-VM consists of a source-to-Bytecode compiler, an extended task and event management system, networking support, and a Bytecode interpreter which can be executed step-wise. The stepping operation is mandatory to integrated the VM (or multiple VMs) in the main IO loop of the host system. The execution time of (most) VM instructions is known in advanced and cab be bound by an upper time limit. This feature enables (soft) real-time capable embedded systems. Multi-tasking is supported including task forking and locking. The PLX-VM provides semi-automatic memory management and a reset capability. A VM typically executes one main program and (optionally) temporarily short background programs. If we consider a distributed VM network, the entire VM networks executes a single program but with multiple control and data states (or different tasks), i.e., we consider the Single Program Multiple Data (SPMD) architecture model.