摘要: 以太坊虚拟机比较操作指令 EVM定义了6条比较操作指令,见下表: 下面是比较操作指令的操作码分布图: LT、GT、SLT、SGT、EQ这5条指令都是从栈顶弹出两个元素,进行比较,然后把结果(1表示true,0表示false)推入栈顶。其中LT和GT把弹出的元素解释为无符号整数进行比较,SLT和SGT 阅读全文
posted @ 2018-11-21 22:18 苦逼码农2014 阅读(597) 评论(0) 推荐(0) 编辑
摘要: 以太坊虚拟机按位运算指令 EVM定义了8条按位运算指令,见下表: 下面是按位运算指令的操作码分布图: AND、OR、XOR、NOT AND、OR、XOR指令从栈顶弹出两个元素,进行按位运算,然后把结果推入栈顶。以AND指令为例,下面是它的操作示意图: NOT指令将栈元素按位取反,下面是它的操作示意图 阅读全文
posted @ 2018-11-21 22:15 苦逼码农2014 阅读(455) 评论(0) 推荐(0) 编辑
摘要: 以太坊虚拟机算术运算指令EVM总共定义了11条算术运算指令,见下表: 这些指令从栈顶弹出两到三个元素,进行相应计算,然后把结果推入栈顶。参与计算的元素和结果均被解释为按二的补码编码的整数。如果计算结果(假设为x)溢出(超出2^256),则最终的结果x’取值x % 2^256(%表示取模运算,^表示指 阅读全文
posted @ 2018-11-21 22:10 苦逼码农2014 阅读(695) 评论(0) 推荐(0) 编辑
摘要: 上一篇文章对EVM和它的指令集进行了简单介绍,本文将介绍POP指令、PUSHx系列指令、DUPx系列指令、SWAPx系列指令。这些指令只对EVM栈进行单纯的操作,它们的操作码分布如下图所示: POP指令POP指令(操作码0x50)从栈顶弹出一个元素。下面是POP指令的操作示意图(白色表示元素即将发生 阅读全文
posted @ 2018-11-21 22:08 苦逼码农2014 阅读(605) 评论(0) 推荐(0) 编辑
摘要: 近期打算写一些关于以太坊虚拟机(后面简称EVM)的文章,这是其中的第一篇。这一系列文章想站在EVM指令集的角度,带领读者逐步理解EVM工作原理,进而理解以太坊区块链技术细节。由于网上介绍以太坊的文章也比较多,所以这一系列文章将最大程度减少不必要的废话,直接提供文章想要表达的信息。 EVM基本信息编程 阅读全文
posted @ 2018-11-21 22:04 苦逼码农2014 阅读(941) 评论(0) 推荐(0) 编辑