比较原语
| 操作码 | 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 | 等同于 EQUAL NOT。 | 18 |
BE | GEQ | x y - x>=y | 等同于 LESS NOT。 | 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' 的数据部分是否一致,等同于 SDLEXCMP ISZERO。 | 26 |
C708 | SDPFX | s s' - ? | 检查 s 是否是 s' 的前缀。 | 26 |
C709 | SDPFXREV | s s' - ? | 检查 s' 是否是 s 的前缀,等同于 SWAP SDPFX。 | 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 |