智能合约 / 主题阅读

EVM操作码中基本算术运算的计算机制

本文解析了EVM中ADD、MUL、SUB、DIV、MOD、SDIV、ADDMOD和MULMOD操作码的计算机制,包括其输入、输出和Gas消耗。

EVM操作码交互演示界面,展示内存和操作码工作原理
主题资料配图,非新闻现场照片 · 配图:这个evm playground可以巩固理解这三个opcode和内存是怎么工作的.

EVM操作码中ADD和MUL的计算机制

EVM中的ADD(0x01)和MUL(0x02)操作码分别用于执行加法和乘法运算。ADD操作码接收两个256位的整数,计算它们的和并取模2^256,结果压入栈中。MUL操作码则执行两个256位整数的乘法,结果同样取模2^256。这两个操作码的Gas消耗分别为3和5,反映了计算复杂度的差异。

EVM操作码中SUB和DIV的计算机制

EVM中的SUB(0x03)和DIV(0x04)操作码分别用于执行减法和除法运算。SUB操作码接收两个256位的整数,计算它们的差并取模2^256,结果压入栈中。DIV操作码则执行两个256位无符号整数的除法,结果为商。这两个操作码的Gas消耗分别为3和5,体现了计算复杂度的差异。

EVM操作码中MOD和SDIV的计算机制

EVM中的MOD(0x06)和SDIV(0x05)操作码分别用于执行取模和整数除法运算。MOD操作码接收两个256位无符号整数,计算它们的余数并压入栈中。SDIV操作码则执行两个256位有符号整数的除法,结果为商。这两个操作码的Gas消耗均为5,反映了计算复杂度的相似性。

EVM操作码中ADDMOD和MULMOD的计算机制

EVM中的ADDMOD(0x08)和MULMOD(0x09)操作码分别用于执行带模运算的加法和乘法。ADDMOD接收三个256位整数,计算(a + b) % N并压入栈中。MULMOD接收三个256位整数,计算(a * b) % N并压入栈中。这两个操作码的Gas消耗均为8,表明它们的计算复杂度较高。

资料与延伸阅读

你可以通过以下原始资料核对文中概念,并继续深入阅读。

  1. Opcodes for the EVM | ethereum.org ↗
  2. 配图:这个evm playground可以巩固理解这三个opcode和内存是怎么工作的. ↗
← 更多智能合约文章返回顶部 ↑