|
1 year ago | |
---|---|---|
cmd/bpfasm | 1 year ago | |
internal/parser | 1 year ago | |
testdata | 1 year ago | |
.gitignore | 1 year ago | |
LICENSE | 1 year ago | |
Makefile | 1 year ago | |
README.md | 1 year ago | |
assembler.go | 1 year ago | |
bpf.go | 1 year ago | |
doc.go | 1 year ago | |
go.mod | 1 year ago | |
go.sum | 1 year ago | |
parse.go | 1 year ago | |
program.go | 1 year ago | |
vm.go | 1 year ago | |
vm_alu_test.go | 1 year ago | |
vm_debug.go | 1 year ago | |
vm_extension_test.go | 1 year ago | |
vm_jump_test.go | 1 year ago | |
vm_load_test.go | 1 year ago | |
vm_registers.go | 1 year ago | |
vm_ret_test.go | 1 year ago | |
vm_scratch_test.go | 1 year ago | |
vm_test.go | 1 year ago |
Berkeley Packet Filter (BPF) assembler.
Easy as running go get
:
~$ go get maze.io/x/bpf/cmd/bpfasm
Compiling an assembly file:
demo.asm
contents:
; icmp random packet sampling, 1 in 4
ldh [12]
jne #0x800, drop
ldb [23]
jneq #1, drop
; get a random uint32 number
ld rand
mod #4
jneq #1, drop
ret #-1
drop: ret #0
Assembling to (big endian) binary:
~$ bpfasm assemble demo.asm
writing to demo.asm.bin
Disassembling:
~$ bpfasm disassemble demo.asm.bin
ld #12
jne #2048,6
ld #23
jneq #1,4
ld #rand
mod #4
jneq #1,1
ret #4294967295
ret #0
The assembler parser and compiler are © 2019 Wijnand Modderman-Lenstra.
The assembler virtual machine and opcode assembler are © 2009, 2016 The Go Authors.
For more details, see the LICENSE.