比较原语
| 操作码 | Fift 语法 | 堆栈 | Gas | 描述 | 
|---|---|---|---|---|
| Please enter a search query | ||||
| No results found | ||||
TVM 指令内容列表
比较原语
整数比较
| xxxxxxx 操作码 | xxxxxxxxxxxxxxxxxxxxxxxxxxxx Fift 语法 | xxxxxxxxxxxxxxxxx 堆栈 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 描述 | xxxx Gas | 
|---|---|---|---|---|
| B8 | SGN | x - sgn(x) | 计算整数 x的符号:x<0时为-1,x=0时为0,x>0时为1。 | 18 | 
| B9 | LESS | x y - x<y | 如 x<y,返回-1,否则返回0。 | 18 | 
| BA | EQUAL | x y - x=y | 如 x=y,返回-1,否则返回0。 | 18 | 
| BB | LEQ | x y - x<=y | 18 | |
| BC | GREATER | x y - x>y | 18 | |
| BD | NEQ | x y - x!=y | 等同于 EQUALNOT。 | 18 | 
| BE | GEQ | x y - x>=y | 等同于 LESSNOT。 | 18 | 
| BF | CMP | x y - sgn(x-y) | 计算 x-y的符号:x<y时为-1,x=y时为0,x>y时为1。除非 x或y为NaN,否则不会发生整数溢出。 | 18 | 
| C0yy | [yy] EQINT | x - x=yy | 如 x=yy,返回-1,否则返回0。-2^7 <= yy < 2^7。 | 26 | 
| C000 | ISZERO | x - x=0 | 检查一个整数是否为零。对应 Forth 的 0=。 | 26 | 
| C1yy | [yy] LESSINT[yy-1] LEQINT | x - x<yy | 如 x<yy,返回-1,否则返回0。-2^7 <= yy < 2^7。 | 26 | 
| C100 | ISNEG | x - x<0 | 检查一个整数是否为负数。对应 Forth 的 0<。 | 26 | 
| C101 | ISNPOS | x - x<=0 | 检查一个整数是否非正。 | 26 | 
| C2yy | [yy] GTINT[yy+1] GEQINT | x - x>yy | 如 x>yy,返回-1,否则返回0。-2^7 <= yy < 2^7。 | 26 | 
| C200 | ISPOS | x - x>0 | 检查一个整数是否为正数。对应 Forth 的 0>。 | 26 | 
| C2FF | ISNNEG | x - x >=0 | 检查一个整数是否非负。 | 26 | 
| C3yy | [yy] NEQINT | x - x!=yy | 如 x!=yy,返回-1,否则返回0。-2^7 <= yy < 2^7。 | 26 | 
| C4 | ISNAN | x - x=NaN | 检查 x是否为NaN。 | 18 | 
| C5 | CHKNAN | x - x | 如果 x为NaN,抛出算术溢出异常。 | 18/68 | 
其他比较
这些“其他比较”原语中的大多数实际上将Slice的数据部分作为位串进行比较(如果没有另外声明,忽略引用)。
| xxxxxxx 操作码 | xxxxxxxxxxxxxxxxxxxxxxxxxxxx Fift 语法 | xxxxxxxxxxxxxxxxx 堆栈 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 描述 | xxxx Gas | 
|---|---|---|---|---|
| C700 | SEMPTY | s - ? | 检查切片 s是否为空(即,不包含任何数据位和cell引用)。 | 26 | 
| C701 | SDEMPTY | s - ? | 检查切片 s是否没有数据位。 | 26 | 
| C702 | SREMPTY | s - ? | 检查切片 s是否没有引用。 | 26 | 
| C703 | SDFIRST | s - ? | 检查切片 s的第一个位是否为一。 | 26 | 
| C704 | SDLEXCMP | s s' - x | 字典序比较 s和s'的数据,根据结果返回-1、0 或 1。 | 26 | 
| C705 | SDEQ | s s' - ? | 检查 s和s'的数据部分是否一致,等同于SDLEXCMPISZERO。 | 26 | 
| C708 | SDPFX | s s' - ? | 检查 s是否是s'的前缀。 | 26 | 
| C709 | SDPFXREV | s s' - ? | 检查 s'是否是s的前缀,等同于SWAPSDPFX。 | 26 | 
| C70A | SDPPFX | s s' - ? | 检查 s是否是s'的真前缀(即,一个与s'不同的前缀)。 | 26 | 
| C70B | SDPPFXREV | s s' - ? | 检查 s'是否是s的真前缀。 | 26 | 
| C70C | SDSFX | s s' - ? | 检查 s是否是s'的后缀。 | 26 | 
| C70D | SDSFXREV | s s' - ? | 检查 s'是否是s的后缀。 | 26 | 
| C70E | SDPSFX | s s' - ? | 检查 s是否是s'的真后缀。 | 26 | 
| C70F | SDPSFXREV | s s' - ? | 检查 s'是否是s的真后缀。 | 26 | 
| C710 | SDCNTLEAD0 | s - n | 返回 s中前导零的数量。 | 26 | 
| C711 | SDCNTLEAD1 | s - n | 返回 s中前导一的数量。 | 26 | 
| C712 | SDCNTTRAIL0 | s - n | 返回 s中末尾零的数量。 | 26 | 
| C713 | SDCNTTRAIL1 | s - n | 返回 s中末尾一的数量。 | 26 |