比较原语
操作码 | 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 |