Skip to content

robertodauria/ebpf-vm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eBPF-VM

This is an implementation of an eBPF virtual machine in Golang.

It's currently still incomplete and will likely be for a while. Here's what works:

  • Reading from an ELF object file, as long as you specify the ELF section to read with -section
  • Endianness can be set with -be for big-endian (default is little-endian)
  • 10 registers (from R0 to R9) are available, with R10 being the frame pointer
  • 512-bytes stack
  • Verbose mode (with -v) will print each instruction as it's executed
  • Debug mode is also available, which outputs the registers and memory state after each instruction -- but you need to uncomment it in the code :)
  • Some (*) instructions are implemented

(*): Just the ones that are used by the test .o files -- and not even all of them.

This is a work in progress. If you feel brave, you can build it and test it with something like:

go build -v ./cmd/vm
./vm -filename testdata/call.o -section .text -v

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages