bpf 指令集
58 struct bpf_insn {
59 __u8 code; /* opcode */
60 __u8 dst_reg:4; /* dest register */
61 __u8 src_reg:4; /* source register */
62 __s16 off; /* signed offset */
63 __s32 imm; /* signed immediate constant */
64 };
一条bpf的指令包括:8字节长
其中操作码共8位,0,1,2这三位表示的是该操作的大类别:0X07
BPF_LD(0x00) / BPF_LDX(0x01) / BPF_ST(0x02) / BPF_STX(0x03) / BPF_ALU(0x04) / BPF_JMP(0x05) / BPF_RET(0x06) / BPT_MISC(0x07)
对于 LD大类 来说:
3,4位表示的是位宽0x00 代表4字节,0x08:2字节,0x10:1个字节 0X18
5.6.7三位表示的是:0XE0
BPF_IMM / BPF_ABS / BPF_IND / BPF_MEM / BPF_LEN / BPF_MSH
对于ALU和JMP大类来说:
4,5,6,7 高四位表示的是具体的操作:0xf0
BPF_ADD / BPF_SUB / BPF_MUL / BPF_DIV / BPF_OR / BPF_AND / BPF_LSH / BPF_RSH / BPF_NEG / BPF_MOD / BPF_XOR / BPF_JA / BPF_JEQ / BPF_JGT / BPF_JGE / BPF_JSET /
第3位表示的是:0x08
BPF_K/BPF_X
BPF使用的寄存器包括:
* R0 - return value from in-kernel function, and exit value for eBPF program
* R1 - R5 - arguments from eBPF program to in-kernel function
* R6 - R9 - callee saved registers that in-kernel function will preserve
* R10 - read-only frame pointer to access stack
code 操作码(8 bit)
目标寄存器(4 bit),源寄存(4 bit),偏移(16bit),立即数(32bit)
bpf 指令集的更多相关文章
- 揭秘 BPF map 前生今世
揭秘 BPF map 前生今世 本文地址:https://www.ebpf.top/post/map_internal 1. 前言 众所周知,map 可用于内核 BPF 程序和用户应用程序之间实现双向 ...
- 聊一聊sockmap 以及ebpf
之前聊过tcpdump 抓包原理,tcpdump使用packet 抓包,使用packet_map 完成零拷贝.但是这个零拷贝也有点假,何为假呢?从网卡到内存走的dma,哪能不能直接从dma拷贝到用户空 ...
- 提高服务端性能的几个socket选项
提高服务端性能的几个socket选项 在之前的一篇文章中,作者在配置了SO_REUSEPORT选项之后,使得应用的性能提高了数十倍.现在介绍socket选项中如下几个可以提升服务端性能的选项: SO_ ...
- BPF漫谈
源起 最近看到国内两篇文章[1][2]先后翻译了就职于Netflix的性能分析大牛Brendan Gregg于2017年7月31日写的<Golang bcc/BPF Function Traci ...
- SSE指令集学习:Compiler Intrinsic
大多数的函数是在库中,Intrinsic Function却内嵌在编译器中(built in to the compiler). 1. Intrinsic Function Intrinsic Fun ...
- ARM-汇编指令集(总结)
ARM汇编指令集 指令.伪指令 (汇编)指令: 是机器码的助记符,经过汇编器编译后,由CPU执行. (汇编)伪指令:用来指导指令执行,是汇编器的产物,最终不会生成机器码. 有两种不同风格的ARM指 ...
- iOS------苹果设备处理器指令集(iPhone初代到iPhone5s)
(via 雅香小筑) Arm处理器,因为其低功耗和小尺寸而闻名,几乎所有的手机处理器都基于arm,其在嵌入式系统中的应用非常广泛,它的性能在同等功耗产品中也很出色. Armv6.armv7.armv7 ...
- SSE指令集优化学习:双线性插值
对SSE的学习总算迈出了第一步,用2天时间对双线性插值的代码进行了优化,现将实现的过程梳理以下,算是对这段学习的一个总结. 1. 什么是SSE 说到SSE,首先要弄清楚的一个概念是SIMD(单指令多数 ...
- RISC指令集的五个周期
RISC指令集的五个周期 RISC(reduced instruction set computer,精简指令集计算机)简称为精简指令集.RISC把执行指令的精力主要放在了经常使用的指令上面.本文主要 ...
随机推荐
- Search in Rotated Sorted Array——LeetCode
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
- mapping4java源码下载(alibab的开源项目)
项目中需要频繁实现json-->pojo,Bean-->Bean的转换,使用了mapping4java这个开源的框架: 网上查资料,该框架是愤怒的苹果提供的,附上原文地址 我也造了个轮子: ...
- IDEA 安装配置及操作总结(新手必看)
Jetbrains官网下载IDEA15 我们在浏览器输入网址https://www.jetbrains.com/.选择相应的系统版本,下载最新版本的IDEA15,Windows系统双击安装文件,根据界 ...
- 访问数据库需要注意的问题 c#
在操作数据库的过程中,必然要产生数据库连接,这就要求在使用的时候要及时关闭连接.以避免数据库会话过多的问题. 以Oracle数据库为例: Oracle数据库查看会话,进程的语句 --查询数据库当前进程 ...
- 《C++总结3》
派生类 Class student1:public student //表示公用继承,默认为私有的 { public : …… …… } 继承的时候一定是全部继承来,但是可以自己设定访问属性,或 ...
- ReactiveObjC框架的简单介绍
最近在一直在学习RAC框架的Object-C版本ReactiveObjC(Swift版本为ReactiveSwift),这篇文章简单展示一下学习的成果!!!如果有什么地方理解错误,欢迎大家指正!!!互 ...
- 微信 php 获取token 第二次失败解决办法
第一次成功了,第二次总是失败,很简单,session问题 clearstatcache(); $_SESSION = ''; $_COOKIE = ''; //获得参数 signature nonce ...
- JSONArray.fromObject不执行且不报错问题的解决
今天在写javaweb工程的时候需要向前台传json格式的数据,用到了json-lib-2.4-jdk15.jar等一系列包,然而却出现如下状况: CityBean是一个javaBean,我们看到,控 ...
- tcl之文件操作
- you do not permission to access / no this server
最近在学习Linux下的httpd服务,自己写了一个虚拟主机的配置文件 重启之后,怎么访问都是出现以下的内容, do not permission to access / no this server ...