当前位置: 首页 > news >正文

rbpf虚拟机-阶段整理

文章目录

  • 一、概述
  • 二、文章链接
  • 三、功能和关键点
  • 四、总结

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存储的<key,value>值。
  3. 打包和代码执行: 对clang进行部署和打包,以及打包文件的反编译,可以清晰的看到打包文件的字节码。对代码的执行实际为对字节码程序的执行,其中用到了elf库。
  4. JIT和解释执行对比: 对JIT和解释执行进行速度对比,对JIT执行的执行速度有了更直观的印象,发现JIT在使用CALL调用辅助函数时,几乎不会产生任何加速。

四、总结

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

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

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

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

相关文章:

  • 阿里云网站备案核验单百度seo排名优化公司哪家好
  • 天津建设教育培训中心网站低价刷粉网站推广
  • 网站死链如何处理北京搜索引擎优化管理专员
  • 怎样找到工厂直招网站刷网站seo排名软件
  • 精准营销的典型案例热狗seo优化外包
  • 广州网站建设商家百度提交网站入口网址
  • AVR128单片机密码锁
  • Flink在双流Join中,window如何选择
  • 【HCIA】静态综合实验练习笔记
  • JavaEE初阶复习(JVM篇)
  • 软考中级电子商务设计师分值分布解析!附最新备考资源!
  • Spark,上传文件
  • Spring | Spring、Spring MVC 和 Spring Boot 的区别
  • IntelliJ IDEA 2024.1.4 (Ultimate Edition)找不到Add Framework Support解决方法
  • 【diffusers 进阶(十五)】dataset 工具,Parquet和Arrow 数据文件格式,load dataset 方法
  • XT1870 同步升压 DC-DC 变换器
  • WebView加载URL时添加时间戳可以防止缓存问题方案
  • ceph数据迁移数据迁移与bacula配置调整优化实战
  • WindTerm快速更改主密码
  • Nextjs15 实战 - React Notes 项目初始化
  • Java学习总结-字符流
  • 通过案例初步认识机器学习
  • Linux 基础入门操作 第九章 进程之间通讯信号量 2
  • Scala(五)
  • 【Anaconda环境绑定指南】3步将自定义环境注入Jupyter Notebook 内核 | 附详细命令与演示
  • [Redis]Redis学习开篇概述