rbpf虚拟机-阶段整理

简介: 该文章是对近期关于rbpf虚拟机文章的整理和回顾。其中包括了验证器、汇编器和反汇编器、op码、即时编译器(JIT)、执行速度测试、打包和代码执行、不同码关系、Call指令相关文章。我认为这些是rbpf虚拟机中比较重要的概念以及技术。

✨重磅!盹猫的个人小站正式上线啦~诚邀各位技术大佬前来探秘!✨
—— 专为开发者打造的宝藏基地,等你来探索!
这里有:


🔥 硬核技术干货:编程技巧、开发经验、踩坑指南,带你解锁技术新姿势!
🎉 趣味开发日常:代码背后的脑洞故事、工具测评,让技术圈不再枯燥~
💎 独家资源分享:开源项目、学习资料包,助你打怪升级快人一步!


🚀 立即访问 → 盹猫猫的个人小站 ← 点击探索
🌟 说不定这里就有你寻找已久的技术秘籍哦~

@[toc]

Welcome to Code Block's blog

本篇文章主要介绍了
[rbpf虚拟机-阶段整理]
❤博主广交技术好友,喜欢我的文章的可以关注一下❤

一、概述

该文章是对近期关于rbpf虚拟机文章的整理和回顾。

其中包括了验证器、汇编器和反汇编器、op码、即时编译器(JIT)、执行速度测试、打包和代码执行、不同码关系、Call指令相关文章。我认为这些是rbpf虚拟机中比较重要的概念以及技术。

(学习该虚拟机的目的是为了搞懂solana合约的执行方式,solana使用的rbpf是在该虚拟机上进行扩展。)

二、文章链接

  1. 验证器
  2. 汇编器和反汇编器
  3. 即时编译器
  4. op码
  5. call指令
  6. 打包和代码执行
  7. JIT和解释执行对比

三、功能和关键点

  1. 验证器:验证器提供了包括一系列对字节码程序的检查。包括:
    check_prog_len - 程序长度检查
    check_load_dw - LD_DW指令检查
    check_jmp_offset - 跳转指令检查
    check_registers - 寄存器访问检查
  2. 汇编器和反汇编器:
  • 汇编器通过汇编指令进行字符分根,并通过循环的方式将其转换为而进行字节码数据。使用到了combine库进行分割和转换。
  • 反汇编器通过循环从map中获取与字节对应的字符串指令的方式,将其转换为汇编码格式。
    1. 即时编译器:即时编译器通过x86-64调用标准完成字节码到机器码的转换。
    2. :通过对字节码、汇编码、机器码的区别,在调用时的分层。
  • 汇编码是语言
  • 字节码是编译后的中间环节
  • 机器码则属于执行环节
    1. op码: 也叫opcode,是区分不同指令之间作用的关键字,其对应在汇编码中为"mov"等前缀。
    2. call指令:call指令为调用辅助函数时必要的指令,需要执行程序前进行注册,本质上为map存储的值。
    3. 打包和代码执行: 对clang进行部署和打包,以及打包文件的反编译,可以清晰的看到打包文件的字节码。对代码的执行实际为对字节码程序的执行,其中用到了elf库。
    4. JIT和解释执行对比: 对JIT和解释执行进行速度对比,对JIT执行的执行速度有了更直观的印象,发现JIT在使用CALL调用辅助函数时,几乎不会产生任何加速。

      四、总结

      这就是对rbpf虚拟机内容的阶段整理,方便大家查阅,自己也学习到了很多东西。如果您在文章中发现任何逻辑或理解错误,请在评论中留下您宝贵的意见。

代码来源:rbpf虚拟机
鸣谢: qmonnet 提供的开源代码.

当然,我也会将带有中文注释和自己理解的一些代码上传的我的github页面,感兴趣的朋友可以进行clone查看.

我的GitHub:forked
在这里插入图片描述

目录
相关文章
|
3天前
|
存储 弹性计算 数据库
阿里云2026年第一波活动有哪些?云服务器抢购、满减券、免费试用都有
2026年阿里云推出多项优惠活动:轻量应用服务器2核2G峰值200M带宽38元抢购,云服务器“99计划”99元与199元新购续费同价;学生享300元无门槛券,教师享5折优惠;初创企业最高得100万上云抵扣金,企业迁云/出海可申5亿算力补贴;140+款云产品免费试用最长12个月,配合165元满减券包(满50减15、满180减50、满350减100),满足个人、企业全场景上云需求,助力个人、企业和学生用户优惠上云。
|
7月前
|
区块链 数据安全/隐私保护 Python
小试牛刀-区块链WalletConnect协议数据解密
最近在学习如何使用Wallet Connect,查阅官方文档后,发现并没有太多的中文参考资料,英文直译读起来也有一些偏差,所以这边直接采用网页Demo的方式,对WC协议有了一定了解.在此进行记录,同时希望帮助到有实现相关功能的朋友.
605 4
|
7月前
|
存储 Java API
小试牛刀-SpringBoot集成SOL链
java工程师:如何在java/springboot中使用solana区块链呢?不用担心,现在solanaj来了!
262 1
|
7月前
|
Linux 开发者 Windows
告别手动上传!开源FTP批量同步工具(免费跨平台)​​
自己开发的一个简单实用的 FTP 文件夹同步工具,支持定时自动同步和系统托盘运行,免去繁琐的配置。
202 0
|
7月前
|
缓存 监控 Linux
Linux系统性能调优技巧和相关工具
Linux 作为一种应用应展和系统服务的优选操作系统,在处理性能和端到端点评估上持有出色表现。但是,在处理进程或系统处于低效状态时,性能调优就显得十分重要。本文将探讨一些 Linux 系统性能调优的常用技巧,并介绍相关工具
202 1
Linux系统性能调优技巧和相关工具
|
7月前
|
存储 算法 fastjson
火点监测:Nasa高分卫星接入
NASA(美国国家航空航天局)是美国联邦政府的一个独立机构,负责国家的航空航天研究和探索任务。NASA成立于1958年,其使命是探索太空并推动科学技术的发展。NASA的主要任务包括研究地球和太空的物理特性、开发和测试航空航天技术、进行太空探索和科学研究,以及促进航空航天技术的应用和技术转移。这里使用其开发的系统firms(火灾资源管理系统),通过Http请求获取数据来实现火点的监测,帮助需要实现相关功能,有类似开发任务的朋友。
218 6
|
7月前
|
算法 关系型数据库 Java
Springboot集成PostGIS完成路径规划
因为公司里需要做关于林区防火方面的项目,需要完成着火后山区路径的导航,但.....某德的功能似乎只能到达山区的边上,后边的路就需要自己完成导航了。搞了一个周终于有所效果了,也遇见了很多的坑,在此记录一下,希望以后不要踩坑。需要上述的环境才能进行路径导航,环境的搭建可以参阅
248 5
|
7月前
|
开发框架 Rust JavaScript
小试牛刀-Anchor安装和基础测试
Anchor是一个SOL链的开发框架,可以很方便的完成链上程序(Program)的编写,并且可以进行快速的前端测试。但安装时需要很多步骤,并且在测试时也有些错误需要注意。在这里对步骤和相关版本进行记录,作为记录和过程分享。
259 4
|
7月前
|
关系型数据库 MySQL 索引
mysql中的索引和分区
在MySQL中,索引和分区是提高查询效率的关键技术。通过创建合适的索引,可以显著提升数据检索速度。而分区可以作为作为进一步提高查询效率的方式,在较大数据量时通常可以使用这两个结合的方式优化查询速度,所以这边将这两个进行整理,巩固个人知识,同时也希望帮助到有需要的朋友。
169 2
|
7月前
|
存储 Rust 安全
Rocket框架JWT鉴权实战:保护Rust Web API的安全方案​
本篇文章是基于rust语言和rocket依赖实现网页JWT认证和鉴权,完成简单的JWT token的验证和鉴权处理,使用cargo做依赖的导入和测试。
321 1