`

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:复制前一个内存调用的输出数据
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics