All Projects → yabits → Ebcvm

yabits / Ebcvm

Licence: mit
EFI Byte Code Virtual Machine in userspace

Programming Languages

c
50402 projects - #5 most used programming language
bytecode
52 projects

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
tsharkVM
tshark + ELK analytics virtual machine
Stars: ✭ 51 (+50%)
Mutual labels:  vm, virtual-machine
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
kcs
Scripting in C with JIT(x64)/VM.
Stars: ✭ 25 (-26.47%)
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
Smlvm
Smallrepo Virtual Machine
Stars: ✭ 265 (+679.41%)
Mutual labels:  virtual-machine, vm
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

ebcvm CircleCI

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].