`

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-Tracer 是一个用于收集和分析以太坊虚拟机(EVM)操作码执行统计的工具。在区块链开发,特别是以太坊智能合约开发中,EVM 的操作码执行效率对合约性能至关...

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

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

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

    理解EVM操作码对于优化智能合约性能和调试至关重要。 1. 数据加载和存储: - `PUSHx`系列:将常量值推入栈顶,x代表推入的字节数,如`PUSH1`到`PUSH32`。 - `DUPx`系列:复制栈顶的x个元素并将副本推回栈顶。 - ...

    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

    智能合约代码检测调研报告

    ArtemisX 支持从源代码或字节码文件开始,通过处理生成 EVM 操作码,然后逐条模拟执行,寻找可能导致漏洞的操作。一旦发现可能的漏洞,它将收集相关信息并进行检测,如果整个执行过程符合漏洞规则,就会判断合约存在...

    zkvm:zkvm外观的草图

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

    优伦话务机EVM2006A配置手册

    识别码用于区分不同的呼叫或操作。例如,在某些情况下,系统可能会要求用户提供识别码才能访问特定的服务或功能。 #### 自定义操作方式 用户可以根据自己的需求定制系统的操作方式,例如设置特定的按键功能、调整...

    bq20z95EVM.zip

    通过这款软件,用户可以执行以下操作: 1. **参数配置**:设置电池组的电压、电流和温度限制,这些参数对于确保电池的正常运行至关重要。例如,用户可以根据电池类型和应用需求调整过充、过放、过流和高温保护阈值...

    Python库 | evm-asm-0.1.0a0.tar.gz

    EVM是 Ethereum 区块链上执行智能合约的平台,它执行特定的字节码(ASM,Assembley),因此这个库可能提供了与EVM字节码相关的操作,比如编译、反编译、解析或模拟执行等功能。 当我们解压"evm-asm-0.1.0a0.tar.gz...

    以太坊智能合约虚拟机(EVM)原理与实现

    - **opcodes.go**:定义了所有操作码(OpCode),每个OpCode对应一种特定的操作。 **指令和操作** EVM的指令集被分为不同的功能组,例如运算、区块操作和加密等。每个指令都与特定的操作函数、gas成本、栈深度验证...

    EMG-EVM系统调试步骤.pdf

    这包括设置拨码开关,如S2、S3、S4、S51和S50,用于设定功能、通讯速率和通讯地址。系统电路板上的指示灯如H1至H10提供了系统状态的实时反馈。接着,调试测头,分三步进行:找到“最大电压”、设定“标准电压”和...

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

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

    TI.DM642EVM.BSL.Code.rar_BSL_dm642 b

    BSL(Boot Strap Loader)是嵌入式系统中的一种低级加载程序,它的主要任务是在系统启动时加载操作系统或者其他高层软件到内存中。在TI的DM642EVM中,BSL源代码对于开发者来说至关重要,因为它允许用户进行固件更新...

    【用户手册】EVM-IMX8MM Ubuntu18.04 开发手册 V1.0.pdf

    本部分将针对【用户手册】EVM-IMX8MM Ubuntu18.04 开发手册 V1.0.pdf的内容,详细解读其提供的知识点。 首先,文档标题为“【用户手册】EVM-IMX8MM Ubuntu18.04 开发手册 V1.0.pdf”,表明这是一份由广州眺望电子...

Global site tag (gtag.js) - Google Analytics