mirror of
https://github.com/genuinetools/reg.git
synced 2024-09-19 00:31:02 -04:00
80 lines
815 B
Text
80 lines
815 B
Text
|
# This filter is compiled to all_instructions.bpf by the `bpf_asm`
|
||
|
# tool, which can be found in the linux kernel source tree under
|
||
|
# tools/net.
|
||
|
|
||
|
# Load immediate
|
||
|
ld #42
|
||
|
ldx #42
|
||
|
|
||
|
# Load scratch
|
||
|
ld M[3]
|
||
|
ldx M[3]
|
||
|
|
||
|
# Load absolute
|
||
|
ldb [42]
|
||
|
ldh [42]
|
||
|
ld [42]
|
||
|
|
||
|
# Load indirect
|
||
|
ldb [x + 42]
|
||
|
ldh [x + 42]
|
||
|
ld [x + 42]
|
||
|
|
||
|
# Load IPv4 header length
|
||
|
ldx 4*([42]&0xf)
|
||
|
|
||
|
# Run extension function
|
||
|
ld #len
|
||
|
ld #proto
|
||
|
ld #type
|
||
|
ld #rand
|
||
|
|
||
|
# Store scratch
|
||
|
st M[3]
|
||
|
stx M[3]
|
||
|
|
||
|
# A <op> constant
|
||
|
add #42
|
||
|
sub #42
|
||
|
mul #42
|
||
|
div #42
|
||
|
or #42
|
||
|
and #42
|
||
|
lsh #42
|
||
|
rsh #42
|
||
|
mod #42
|
||
|
xor #42
|
||
|
|
||
|
# A <op> X
|
||
|
add x
|
||
|
sub x
|
||
|
mul x
|
||
|
div x
|
||
|
or x
|
||
|
and x
|
||
|
lsh x
|
||
|
rsh x
|
||
|
mod x
|
||
|
xor x
|
||
|
|
||
|
# !A
|
||
|
neg
|
||
|
|
||
|
# Jumps
|
||
|
ja end
|
||
|
jeq #42,prev,end
|
||
|
jne #42,end
|
||
|
jlt #42,end
|
||
|
jle #42,end
|
||
|
jgt #42,prev,end
|
||
|
jge #42,prev,end
|
||
|
jset #42,prev,end
|
||
|
|
||
|
# Register transfers
|
||
|
tax
|
||
|
txa
|
||
|
|
||
|
# Returns
|
||
|
prev: ret a
|
||
|
end: ret #42
|