首页 / 虚拟机 / 以太坊虚拟机介绍5-比较操作指令
以太坊虚拟机介绍5-比较操作指令
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了以太坊虚拟机介绍5-比较操作指令,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含843字,纯文字阅读大概需要2分钟。
内容图文
以太坊虚拟机比较操作指令
EVM定义了6条比较操作指令,见下表:
下面是比较操作指令的操作码分布图:
LT、GT、SLT、SGT、EQ
这5条指令都是从栈顶弹出两个元素,进行比较,然后把结果(1表示true,0表示false)推入栈顶。其中LT和GT把弹出的元素解释为无符号整数进行比较,SLT和SGT把弹出的元素解释为有符号数进行比较,EQ不关心符号。以LT指令为例,下面是它的操作示意图:
ISZERO
ISZERO指令从栈顶弹出一个元素,判断它是否为0,如果是,则把1推入栈顶,否则把0推入栈顶。下面是ISZERO指令的操作示意图:
实例分析
Solidity编译器使用LT和SLT指令实现小于运算符(<),使用GT和SGT指令实现大于运算符(>),使用EQ指令实现等于运算符(==),使用ISZERO指令实现布尔取反运算符(!)。读者可以编译下面这个智能合约(solc --asm --opcodes comparison_demo.sol),观察比较操作指令的使用:
// comparison_demo.sol
pragma solidity ^0.4.24;
contract C {
function test() public pure {
int s1; int s2;
uint u1; uint u2;
bool b1 = u1 < u2; // LT
bool b2 = u1 > u2; // GT
bool b3 = s1 < s2; // SLT
bool b4 = s1 > s2; // SGT
bool b5 = s1 == s2; // EQ
bool b6 = !b5; // ISZERO
}
}
总结
本文介绍了EVM比较操作指令,下一篇文章将介绍EVM存储相关指令。
原文:https://www.cnblogs.com/405845829qq/p/9998262.html
内容总结
以上是互联网集市为您收集整理的以太坊虚拟机介绍5-比较操作指令全部内容,希望文章能够帮你解决以太坊虚拟机介绍5-比较操作指令所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。