跳到主要内容

比较原语

操作码Fift 语法堆栈Gas描述
Please enter a search query
No results found

TVM 指令内容列表

比较原语

整数比较

xxxxxxx
操作码
xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Fift 语法
xxxxxxxxxxxxxxxxx
堆栈
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
描述
xxxx
Gas
B8SGNx - sgn(x)计算整数 x 的符号:
x<0 时为 -1x=0 时为 0x>0 时为 1
18
B9LESSx y - x<yx<y,返回 -1,否则返回 018
BAEQUALx y - x=yx=y,返回 -1,否则返回 018
BBLEQx y - x<=y18
BCGREATERx y - x>y18
BDNEQx y - x!=y等同于 EQUAL NOT18
BEGEQx y - x>=y等同于 LESS NOT18
BFCMPx y - sgn(x-y)计算 x-y 的符号:
x<y 时为 -1x=y 时为 0x>y 时为 1
除非 xyNaN,否则不会发生整数溢出。
18
C0yy[yy] EQINTx - x=yyx=yy,返回 -1,否则返回 0
-2^7 <= yy < 2^7
26
C000ISZEROx - x=0检查一个整数是否为零。对应 Forth 的 0=26
C1yy[yy] LESSINT
[yy-1] LEQINT
x - x<yyx<yy,返回 -1,否则返回 0
-2^7 <= yy < 2^7
26
C100ISNEGx - x<0检查一个整数是否为负数。对应 Forth 的 0<26
C101ISNPOSx - x<=0检查一个整数是否非正。26
C2yy[yy] GTINT
[yy+1] GEQINT
x - x>yyx>yy,返回 -1,否则返回 0
-2^7 <= yy < 2^7
26
C200ISPOSx - x>0检查一个整数是否为正数。对应 Forth 的 0>26
C2FFISNNEGx - x >=0检查一个整数是否非负。26
C3yy[yy] NEQINTx - x!=yyx!=yy,返回 -1,否则返回 0
-2^7 <= yy < 2^7
26
C4ISNANx - x=NaN检查 x 是否为 NaN18
C5CHKNANx - x如果 xNaN,抛出算术溢出异常。18/68

其他比较

这些“其他比较”原语中的大多数实际上将Slice的数据部分作为位串进行比较(如果没有另外声明,忽略引用)。

xxxxxxx
操作码
xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Fift 语法
xxxxxxxxxxxxxxxxx
堆栈
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
描述
xxxx
Gas
C700SEMPTYs - ?检查切片 s 是否为空(即,不包含任何数据位和cell引用)。26
C701SDEMPTYs - ?检查切片 s 是否没有数据位。26
C702SREMPTYs - ?检查切片 s 是否没有引用。26
C703SDFIRSTs - ?检查切片 s 的第一个位是否为一。26
C704SDLEXCMPs s' - x字典序比较 ss' 的数据,根据结果返回 -1、0 或 1。26
C705SDEQs s' - ?检查 ss' 的数据部分是否一致,等同于 SDLEXCMP ISZERO26
C708SDPFXs s' - ?检查 s 是否是 s' 的前缀。26
C709SDPFXREVs s' - ?检查 s' 是否是 s 的前缀,等同于 SWAP SDPFX26
C70ASDPPFXs s' - ?检查 s 是否是 s' 的真前缀(即,一个与 s' 不同的前缀)。26
C70BSDPPFXREVs s' - ?检查 s' 是否是 s 的真前缀。26
C70CSDSFXs s' - ?检查 s 是否是 s' 的后缀。26
C70DSDSFXREVs s' - ?检查 s' 是否是 s 的后缀。26
C70ESDPSFXs s' - ?检查 s 是否是 s' 的真后缀。26
C70FSDPSFXREVs s' - ?检查 s' 是否是 s 的真后缀。26
C710SDCNTLEAD0s - n返回 s 中前导零的数量。26
C711SDCNTLEAD1s - n返回 s 中前导一的数量。26
C712SDCNTTRAIL0s - n返回 s 中末尾零的数量。26
C713SDCNTTRAIL1s - n返回 s 中末尾一的数量。26

TVM 指令内容列表