e=vm2:vm in evm
1. 引言
evm2 EVM平方:
e=vm² (pronounced evm-squared; the = is silent), also spelled evm2, is an evm that runs inside evm。
开源代码见:
- https://github.com/hananbeer/evm2
当前使用 huff——为A low level assembly language for the EVM 汇编语言 实现了evm,使得可have a vm in evm:
- run_huff.sh
- test_huff.sh
同时,还有一些老接口:
- 1)编译:【其中evm为go-ethereum中的一个工具】
evm compile evm.easm
- 2)运行:使用
evm run
或如下脚本:./run.sh 0x<bytecode>
- 3)调试:
./disas.sh
将编译evm2,然后展示反汇编结果,有助于理解debug。
2. e=vm2测试用例
注意:代码中若无return
声明,将返回evm2的memory。
- 1)用例1:返回0x33 * 2:
./test.sh 60336002025952
"00..0066"
- 2)用例2:返回[0x00, 0x20, 0x40]:
./test.sh 595952595952595952
"..00..20..40"
- 3)用例3:mstore8 & mstore:
./test_huff.sh 6040595360205952
"40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020"
- 4)用例4:emit LOG0(abi.encode(uint256(-1), uint256(0))):【查看日志需运行
evm --debug
】
# classic evm:
evm --debug --json --code 600019595260406000a0 run# and for evm2:
evm --debug --json --code `huffc evm.huff --bin-runtime` --input 600019595260406000a0 run#### LOGS ####
LOG0: 0000000000000000000000007265636569766572 bn=0 txi=0
00000000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
00000010 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
参考资料
[1] twitter evm-squared
e=vm2:vm in evm相关推荐
- 操作系统-虚拟机-百科:VM
ylbtech-操作系统-虚拟机-百科:VM 虚拟机(Virtual Machine)指 通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统. 虚拟系统通过生成现有操作系统 ...
- 谷歌新作gVisor:VM容器融合技术已经到来
5 月 2 日,谷歌发布了一款新型的沙箱容器运行时 gVisor,号称能够为容器提供更安全的隔离,同时比 VM 更轻量.容器基于共享内核,安全性是大家关注的一大要点,gVisor 的发布势必将引来更多 ...
- vm 安装jdk1.8_JDK 13:VM.events已添加到jcmd
vm 安装jdk1.8 CSR( 兼容性和规范审查 ) JDK-8224601 ["提供VM.events诊断命令"]从JDK 13 Early Access Build #24 ...
- JDK 13:VM.events已添加到jcmd
CSR( 兼容性和规范审查 ) JDK-8224601 ["提供VM.events诊断命令"]从JDK 13 Early Access Build #24 (日期为2019/6/6 ...
- 虚拟化 oracle rac,数据库虚拟化之战:VM与Oracle RAC
云计算.虚拟机.利用率提升.整合或者任何你喜欢用的词汇,这都是当今所有IT组织大量工作关注的焦点.在本文中,我们将进行一场讨论,双方都是久经沙场的IT资深人士,探讨虚拟机技术与Oracle真正应用集群 ...
- linux降低磁盘的读,Linux磁盘I/O优化:vm.dirty_ratio - 米扑博客
Linux 文件缓存是一项重要的性能改进,在大多数情况下,读缓存在绝大多数情况下是有益无害的(程序可以直接从RAM中读取数据).写缓存比较复杂,Linux内核将磁盘写入缓存,过段时间再异步将它们刷新到 ...
- 小白笔记:VM VirtualBox 虚拟机下Ubuntu磁盘空间不足”Low Disk Space on “Filesystem root” ”及固定大小储存虚拟磁盘转动态分配储存的简单扩容
示范版本:虚拟机软件VM VirtualBox 6.1.36 +系统Ubuntu20.04 解决问题:Ubuntu在启动或下载文件时候时,提示磁盘空间不足(Low Disk Space on &quo ...
- 步骤整理:VM虚拟机安装Brat(包括安装VMware,CentOS)
VM虚拟机安装Brat 先说一句 以下内容,需要大量下载,如果觉得网页下载速度过慢,可安装IDM 以下为IDM软件,特意找了无需付费的: 链接:https://pan.baidu.com/s/1-jV ...
- 【方向盘】启动命令和IDEA如何传递:VM参数、命令行参数、系统参数、环境变量参数、main方法参数
本文已被https://yourbatman.cn收录:女娲Knife-Initializr工程可公开访问啦:程序员专用网盘https://wangpan.yourbatman.cn:技术专栏源代码大 ...
最新文章
- 【Qt】QImage使用总结
- F2上的8×8可逆矩阵的个数为2的62次幂
- 关于在学校锻炼的思考
- 1.4	VC6.0在win7下安装的兼容性问题以及解决办法
- 期货黄金与现货黄金比较
- 微信小程序数据拼接_微信小程序使用原生WebSokcet实现断线重连及数据拼接
- 第11章 递归分形树(《Python趣味创意编程》教学视频)
- RHEL5.4 x86_64 GCC 4.1.2 升级到4.7.0版过程(含安装MPFR、GMP、MPC过程)
- 微软新开源!不用写 1 行代码的自动化测试工具
- 建造者模式 生成器模式 创建型 设计模式(五)
- 米思齐MT1637简单显示字符串和时间
- 微信小程序分享至朋友圈功能
- PAT-厘米换算英尺英寸(简单编程题)
- github网站下载方法
- ubuntu双显示器下发生的问题
- 108. 将有序数组转换为二叉搜索树
- 今天我们不搞科研,来搞颜色
- 中国防静电塑料卷轴市场深度研究分析报告
- C语言机器人视觉系统原理,机器人视觉系统的组成及工作原理
- 0017加速UV检测的一种算法