`

EVM操作码

 
阅读更多

2.栈和内存操作码
2.1 POP:取出栈顶元素
2.2 PUSH:向栈顶加入数据(可以直接在后边跟一个数字来指定要加入的字节数,取值范围为1到32,即最大为一个"字")
2.3 MLOAD:从内存中取出一个"字"
2.4 MSTORE:存储一个"字"到内存中
2.5 JUMP:修改程序计数器(PC)的位置
2.6 PC:程序计数器(program counter)
2.7 MSIZE:目前已激活(已使用)的内存大小(以"字"为单位)
2.8 GAS:可用的gas数量(当前交易内)
2.9 DUP:复制栈里的元素到栈顶(可以直接在后边跟一个数字来指定要复制的元素,比如DUP6可以复制栈顶数第6个元素到栈顶,后边跟的数字最大为16).
2.10 SWAP:交换栈里的元素(可以直接在后边跟一个数字来指定要交换的元素,比如SWAP6可以将栈中的第7个元素与栈顶元素交换,后边跟的数字大最为16).

3.通用系统操作码
3.1 CREATE:创建账户
3.2 CALL:向某个账户发起一个消息调用
3.3 RETURN:终止执行,并返回输出数据
3.4 REVERT:终止执行,并复原(回退)状态改动
3.5 SELFDESTRUCT:终止执行,并将账户加入当前交易的自毁集合

4.算术操作码
4.1 ADD:加法
4.2 MUL:乘法
4.3 SUB:减法
4.4 DIV:整数除法
4.5 SDIV:有符号整数除法
4.6 MOD:模运算
4.7 SMOD:有符号模运算
4.8 ADDMOD:先做加法再取模
4.9 MULMOD:先做乘法再取模
4.10 EXP:指数运算
4.11 STOP:终止操作

5.环境数据操作码
5.1 ADDRESS:当前程序执行所基于的账户地址
5.2 BALANCE:取得指定账户的余额
5.3 CALLVALUE:取得当前交易的转账金额(交易数据中的value字段值)
5.4 ORIGIN:取得最初引发这次执行的原始交易的发送者地址
5.5 CALLER:当前程序执行的直接调用者
5.6 CODESIZE:当前运行环境的代码长度
5.7 GASPRICE:当前运行环境的gasPrice
5.8 EXTCODESIZE:指定账户的代码长度
5.9 RETURNDATACOPY:复制前一个内存调用的输出数据
分享到:
评论

相关推荐

    evm-tracer:跟踪器收集EVM操作码的直方图

    evm-tracer 跟踪器收集EVM操作码的直方图

    opcode-purity:描述EVM操作码中纯度检测的文档

    标题:EVM中的纯度日期:2018-06-08 10:20 修改时间:2018-06-08 10:20 类别:以太坊标签:以太坊,纯度,操作码弹头:EVM-纯度作者:保罗·豪纳(Paul Hauner) 封面:imgs / opcode-purity / header.jpg 简介:...

    evm2wasm:[ORPHANED]将EVM代码转换为eWASM

    注意:此项目未积极维护。...通过每个已编译的EVM操作码(而不是每个分支段)的燃气计量将EVM转换为WAST $ bin/evm2wasm.js -e `evm_bytecode_file` -o `wasm_output_file` --wast --ch

    EVM:以太坊虚拟机(EVM)字节码反编译器

    EVM字节码反编译器 解释器和反编译器,以及用于从字节码中以编程方式提取信息的其他几种工具。 用法 npm我evm 产品特点 将字节码转换为操作码 ...getJumpDestinations() -从JUMPDEST操作码获取程序计数器数

    evm_llvm:EVM LLVM项目的官方仓库

    如今,在EVM上处理智能合约有很多限制。 由于EVM平台是一个非常特定于区块链的执行环境,因此编程语言... 作为一种软件指令集体系结构,EVM操作码旨在为社区提供最佳的安全度量,而不是性能。 因此,我们不能假设在x86

    evm-disassembler:EVM字节码转操作码反汇编程序

    EVM字节码转操作码反汇编程序 快速运行: $ echo "0x600035601c52" | python3.6 byte2op.py [0] PUSH1 0:0x00 [2] CALLDATALOAD [3] PUSH1 28:0x1c [5] MSTORE

    zkvm:zkvm外观的草图

    可以调整每个EVM操作码的用气成本。 如果它们非常昂贵,目前还可以排除一些操作码。 可以排除预编译。 此回购创建了一个草图,以此作为解释的方式,但也使我的想法清晰明了。拱我们有两个证明可以用来证明状态转换...

    evm-opcodes:以太坊操作码和指令参考

    evm-opcodes:以太坊操作码和指令参考

    ethereum-disassembler:以太坊反汇编器。 二进制字节码->操作码

    以太坊反汇编程序从二进制代码到操作码版本 Java代码示例 Disassembler d = new Disassembler("60606040523415600e57600080fd5b603580601b6000396000f300606060"); System.out.println(d.getDisassembledCode()); ...

    evm-ts:以TypeScript实现的以太坊虚拟机

    虚拟机以TypeScript实现的以太坊虚拟机项目状态运行简单的合同,结帐 :fire: 支持〜110个操作码 :smiling_face_with_heart-eyes: 测试再次运行ethersumjs-vm (很快再次geth或parity ) :lady_beetle: 缺乏气体计算 ...

    evm-asm

    EVM组装实用程序 与EVM(以太坊虚拟机)分叉及其操作码一起使用的实用程序类和函数。 安装 pip install evm-asm 贡献 $ pip install -e .[dev] $ pytest

    solidity-create2-example:如何使用君士坦丁堡更新中发布的CREATE2操作码以太坊的示例

    CREATE2示例如何使用在更新中发布的操作码以太坊的示例。讲解这些教程将向您展示如何预先确定智能合约的链下地址,然后使用来自智能合约的create2进行部署。 Factory.sol使用create2操作码部署其他合同的合同: ...

    破坏者:以太坊智能合约字节码的静态程序分析框架

    它将EVM字节码程序反编译为对程序的控制流程图进行编码的等效中间表示形式。 此表示删除了所有堆栈操作,从而公开了否则会被遮盖的数据依赖性。 然后,将这些信息与Datalog规范一起馈入分析引擎中,以提取程序属性...

    Solidity汇编教程

    在用Solidity开发以太坊智能合约时,使用汇编可以直接与EVM交互,降低gas开销成本,更精细的...以太坊虚拟机EVM有自己的指令集,该指令集中目前包含了144个操作码,详情参考Geth源代码 这些指令是Solidity抽象出来的

    ethereum-bytecode-analyzer:在以太坊区块链中查找合同,分析其字节码并通过JSON自定义规则进行过滤

    已经有我无法赶上的类似工具它支持(或将要):完毕字节码反汇编控制流程图(静态) 控制流程图(动态/符号) 跟踪用作执行功能的任何操作码的输出/输入的每个单词 进行中/ 部分的区块链导航以太坊虚拟机已实现符号...

    arbitrum-box:在 Arbitrum Layer 2 上编译、迁移和测试代码的样板证明

    仲裁箱 这个 Truffle Arbitrum Box 为您提供了开始为 Arbitrum 的以太... 开发人员会注意到 EVM 和 Arbitrum 链之间的主要区别在于,一些操作码不同,时间和气体等概念的处理方式略有不同。 开发人员可以使用他们的常规

    EthereumStatusCodes:以太坊智能合约的状态码

    两者都为程序员(例如调试)和需要决定下一步操作的程序提供了大量信息。 与布尔值相比,ESC传递的信息集要丰富得多,并且与任意字符串不同,它们能够自动做出React。用户反馈由于状态码是有限的并且事先已知,因此...

    masala:独立的以太坊虚拟机

    以太坊VM的实现,以支持调查纯共识支持的账本(如Juno)中托管EVM和字节码。 VM /字节码解释器 Masala.VM包含主要的解释程序,该解释程序在黄纸规范的Masala.VM进行紧凑的调度,以确保堆栈互操作性正确。 通过利用...

    WCDMA射频测试操作手册-8960图文版.doc

    第一部分为WCDMA射频常规测试项目,包括:相邻信道泄漏比,EVM,频谱发射模版,关功率,开环功率控制,相位不连续性,最大发射功率,峰值码域误差,内环功率控制,频率误差,接收灵敏度。

    myDasm:一个简单的Solid Disassembler,扩展了geth中可用的功能

    也许我们需要两个版本:-) 顺便说一句-它可以死在最后一个操作码上。 会解决。 某个时候为什么? 当我发现一个流行的令牌由42个合同组成,其中只有约5个经过验证时,我感到很好奇。 然后,我开始考虑必须至少有一种...

Global site tag (gtag.js) - Google Analytics