以太坊技术黄皮书学习笔记20:虚拟机指令

指令执行需要消耗的gas计算方式,不同类型的指令价格不同。

根据价格不同,将指令划分了不同的登记,如下图:

公式1表示根据内存来计算价格,公式2是固定的价格,a表示当前状态激活的内存使用量,以字为计量单位,公式3说明需要消耗的gas价格与内存使用量的平方有关。

公式4,5,6,7会在具体的虚拟机及指令中使用到,是指令对应操作公式的一部分,下图是指令对应的意义和操作方式。

虚拟机的图灵完备的编程语言solidity在编写完成后会编程如表中第一列这样的操作代码,他们对应的助记符一般是应用在公式的表达中,如上表第二列,第三列表示该操作需要出栈的数据个数和入栈的数据个数,最后一列表示对应该操作吗的公式,我们以第二行加法为例。

该加法操作的将当前栈上的2个数据进行加法运算,然后将结果作为栈顶元素压入。虚拟机的汇编指令的操作基本上全部是以这样出栈压栈的方式执行的。下图是部分虚拟机指令的定义和对栈数据的运算规则,有兴趣的同学可以研究一下黄皮书的具体内容,在附录里面有详细的解释。

你可能感兴趣的:(以太坊技术黄皮书学习笔记20:虚拟机指令)