以太坊虚拟机算术运算指令
EVM总共定义了11条算术运算指令,见下表:
算术运算指令 | 操作码 | 说明 |
---|---|---|
ADD | 0x01 | 加法运算 |
MUL | 0x02 | 乘法运算 |
SUB | 0x03 | 减法运算 |
DIV | 0x04 | 无符号整除运算 |
SDIV | 0x05 | 有符号整除运算 |
MOD | 0x06 | 无符号取模运算 |
SMOD | 0x07 | 有符号取模运算 |
ADDMOD | 0x08 | 后面解释 |
MULMOD | 0x09 | 后面解释 |
EXP | 0x0A | 指数运算 |
SIGNEXTEND | 0x0B | 符号位扩展 |
这些指令从栈顶弹出两到三个元素,进行相应计算,然后把结果推入栈顶。参与计算的元素和结果均被解释为按二的补码编码的整数。如果计算结果(假设为x)溢出(超出2^256),则最终的结果x’取值x % 2^256(%表示取模运算,^表示指数运算)。