yabits / Ebcvm
Licence: mit
EFI Byte Code Virtual Machine in userspace
Stars: ✭ 34
Labels
Projects that are alternatives of or similar to Ebcvm
Linux Unattended Installation
This project provides all you need to create an unattended installation of a minimal setup of Linux.
Stars: ✭ 215 (+532.35%)
Mutual labels: uefi, virtual-machine, vm
RISVM
A low overhead, embeddable bytecode virtual machine in C++
Stars: ✭ 21 (-38.24%)
Mutual labels: vm, virtual-machine
Enigma
An Erlang VM implementation in Rust
Stars: ✭ 877 (+2479.41%)
Mutual labels: virtual-machine, vm
Ark
ArkScript is a small, fast, functional and scripting language for C++ projects
Stars: ✭ 312 (+817.65%)
Mutual labels: virtual-machine, vm
js5005
js5005 is a virtual CPU with every logic gate simulated. A pretty interface, a built in assembler, display, and 256 bytes of RAM to boot. It's the better i4004.
Stars: ✭ 14 (-58.82%)
Mutual labels: vm, virtual-machine
Virtualbox Python
Complete implementation of VirtualBox's COM API with a Pythonic interface.
Stars: ✭ 277 (+714.71%)
Mutual labels: virtual-machine, vm
RSqueak
A Squeak/Smalltalk VM written in RPython.
Stars: ✭ 78 (+129.41%)
Mutual labels: vm, virtual-machine
Embiggen Disk
embiggden-disk live-resizes a filesystem after first live-resizing any necessary layers below it: an optional LVM LV and PV, and an MBR or GPT partition table
Stars: ✭ 440 (+1194.12%)
Mutual labels: virtual-machine, vm
Awesome Wasm Runtimes
A list of webassemby runtimes
Stars: ✭ 490 (+1341.18%)
Mutual labels: virtual-machine, vm
Vmcli
A set of utilities (vmcli + vmctl) for macOS Virtualization.framework
Stars: ✭ 571 (+1579.41%)
Mutual labels: virtual-machine, vm
vm-automation
VirtualBox automation using Python
Stars: ✭ 1 (-97.06%)
Mutual labels: vm, virtual-machine
open-semantic-desktop-search
Virtual Machine for Desktop Search with Open Semantic Search
Stars: ✭ 22 (-35.29%)
Mutual labels: vm, virtual-machine
Animach
Scheme语言实现和运行时环境 / A Scheme runtime & implementation
Stars: ✭ 45 (+32.35%)
Mutual labels: vm, virtual-machine
Lc3 Vm
Write your own virtual machine for the LC-3 computer!
Stars: ✭ 631 (+1755.88%)
Mutual labels: virtual-machine, vm
butterfly
Butterfly connects Virtual Machines and control their traffic flow
Stars: ✭ 48 (+41.18%)
Mutual labels: vm, virtual-machine
SBTCVM-Gen2-9
SBTCVM is a virtual machine implementation of a balanced ternary (base 3) computer. Features several compiled languages for ternary software development.
Stars: ✭ 32 (-5.88%)
Mutual labels: vm, virtual-machine
16bitjs
💻 A 16-bit virtual machine, including assembly language with 37 instructions, binary assembler, and a step through debugger
Stars: ✭ 427 (+1155.88%)
Mutual labels: virtual-machine, vm
EFI Byte Code Virtual Machine in Userspace
ebcvm is a usermode EFI Byte Code (EBC) virtual machine. It supports all EBC instructions described in UEFI Specification. It also supports a few UEFI native code emulations and a simple debugger.
Building ebcvm
To build ebcvm, simply run:
$ make
This will build following executables.
- ebcvm: EBC VM
- tools/ebcdisas: Disassembler for EBC binaries
- tools/fnv1: Fowler-Noll-Vo hash tool
To run tests, run:
$ make test
Usage
Usage: ./ebcvm [OPTION] FILE
EFI Byte Code Interpreter
[OPTION]
--debug={0,1} debug mode
--mem=INT size of memory
--stack=INT size of stack
--heap=INT size of heap
--step={0,1} step execution
--reloc={0,1} relocate sections
--help show this help
Working with ELVM
Since there is no single EBC binary available in public, we created an EBC backend for ELVM.
To test EBC backend, run:
$ export PATH=`pwd`:$PATH
$ git clone https://github.com/retrage/elvm.git
$ cd elvm && git checkout retrage/ebc-v2
$ make ebc
The ELVM EBC backend will generate EBC binaries from EIR and C source code using modified 8cc.
EFI native code emulations
ebcvm has following native code emulations:
- EFI_BOOT_SERVICES.AllocatePool()
- EFI_SYSTEM_TABLE.ConIn.ReadKeyStroke()
- EFI_SYSTEM_TABLE.ConOut.OutputString()
License
ebcvm is released under the MIT license.
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].