Cell原语
| 操作码 | Fift 语法 | 堆栈 | Gas | 描述 | 
|---|---|---|---|---|
| Please enter a search query | ||||
| No results found | ||||
TVM 指令内容列表
Cell 原语
Cell 序列化原语
| xxxxxxx 操作码 | xxxxxxxxxxxxxxxxxxxxxxxxxxxx Fift 语法 | xxxxxxxxxxxxxxxxx 堆栈 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 描述 | xxxx Gas | 
|---|---|---|---|---|
| C8 | NEWC | - b | 创建一个新的空 构建器。 | 18 | 
| C9 | ENDC | b - c | 将 构建器 转换为普通的 cell。 | 518 | 
| CAcc | [cc+1] STI | x b - b' | 将 0 <= cc <= 255的有符号cc+1-位整数x存入 构建器b中,如果x不适合于cc+1位,则抛出范围检查异常。 | 26 | 
| CBcc | [cc+1] STU | x b - b' | 将无符号的 cc+1-位整数x存入 构建器b中。在其他方面,它与STI类似。 | 26 | 
| CC | STREF | c b - b' | 将 cell c的引用存入 构建器b中。 | 18 | 
| CD | STBREFRENDCST | b b'' - b | 等同于 ENDCSWAPSTREF。 | 518 | 
| CE | STSLICE | s b - b' | 将 分片 s存入 构建器b中。 | 18 | 
| CF00 | STIX | x b l - b' | 为 0 <= l <= 257,将有符号l-位整数x存入b中。 | 26 | 
| CF01 | STUX | x b l - b' | 为 0 <= l <= 256,将无符号l-位整数x存入b中。 | 26 | 
| CF02 | STIXR | b x l - b' | 与 STIX类似,但参数顺序不同。 | 26 | 
| CF03 | STUXR | b x l - b' | 与 STUX类似,但参数顺序不同。 | 26 | 
| CF04 | STIXQ | x b l - x b f or b' 0 | STIX的静默版本。如果b中没有空间,将b'=b和f=-1。如果 x不适合于l位,将b'=b和f=1。如果操作成功, b'是新的 构建器 和f=0。然而, 0 <= l <= 257,如果不是这样,则抛出范围检查异常。 | 26 | 
| CF05 | STUXQ | x b l - x b f or b' 0 | STUX的静默版本。 | 26 | 
| CF06 | STIXRQ | b x l - b x f or b' 0 | STIXR的静默版本。 | 26 | 
| CF07 | STUXRQ | b x l - b x f or b' 0 | STUXR的静默版本。 | 26 | 
| CF08cc | [cc+1] STI_l | x b - b' | [cc+1] STI的更长版本。 | 34 | 
| CF09cc | [cc+1] STU_l | x b - b' | [cc+1] STU的更长版本。 | 34 | 
| CF0Acc | [cc+1] STIR | b x - b' | 等同于 SWAP[cc+1] STI。 | 34 | 
| CF0Bcc | [cc+1] STUR | b x - b' | 等同于 SWAP[cc+1] STU。 | 34 | 
| CF0Ccc | [cc+1] STIQ | x b - x b f or b' 0 | STI的静默版本。 | 34 | 
| CF0Dcc | [cc+1] STUQ | x b - x b f or b' 0 | STU的静默版本。 | 34 | 
| CF0Ecc | [cc+1] STIRQ | b x - b x f or b' 0 | STIR的静默版本。 | 34 | 
| CF0Fcc | [cc+1] STURQ | b x - b x f or b' 0 | STUR的静默版本。 | 34 | 
| CF10 | STREF_l | c b - b' | STREF的更长版本。 | 26 | 
| CF11 | STBREF | b' b - b'' | 等同于 SWAPSTBREFR。 | 526 | 
| CF12 | STSLICE_l | s b - b' | STSLICE的更长版本。 | 26 | 
| CF13 | STB | b' b - b'' | 将 构建器 b'中的所有数据附加到 构建器b中。 | 26 | 
| CF14 | STREFR | b c - b' | 等同于 SWAPSTREF。 | 26 | 
| CF15 | STBREFR_l | b b' - b'' | STBREFR的更长编码。 | 526 | 
| CF16 | STSLICER | b s - b' | 等同于 SWAPSTSLICE。 | 26 | 
| CF17 | STBRBCONCAT | b b' - b'' | 连接两个构建器。 等同于 SWAPSTB。 | 26 | 
| CF18 | STREFQ | c b - c b -1 or b' 0 | STREF的静默版本。 | 26 | 
| CF19 | STBREFQ | b' b - b' b -1 or b'' 0 | STBREF的静默版本。 | 526 | 
| CF1A | STSLICEQ | s b - s b -1 or b' 0 | STSLICE的静默版本。 | 26 | 
| CF1B | STBQ | b' b - b' b -1 or b'' 0 | STB的静默版本。 | 26 | 
| CF1C | STREFRQ | b c - b c -1 or b' 0 | STREFR的静默版本。 | 26 | 
| CF1D | STBREFRQ | b b' - b b' -1 or b'' 0 | STBREFR的静默版本。 | 526 | 
| CF1E | STSLICERQ | b s - b s -1 or b'' 0 | STSLICER的静默版本。 | 26 | 
| CF1F | STBRQBCONCATQ | b b' - b b' -1 or b'' 0 | STBR的静默版本。 | 26 | 
| CF20 | [ref] STREFCONST | b - b’ | 等同于 PUSHREFSTREFR。 | 26 | 
| CF21 | [ref] [ref] STREF2CONST | b - b’ | 等同于 STREFCONSTSTREFCONST。 | 26 | 
| CF23 | b x - c | 如果 x!=0,从 构建器b创建一个 特殊 或 异类 cell。异类cell的类型必须存储在 b的前 8 位中。如果 x=0,它相当于ENDC。否则,将在创建异类cell之前对b的数据和引用执行一些有效性检查。 | 526 | |
| CF28 | STILE4 | x b - b' | 存储一个小端有符号 32 位整数。 | 26 | 
| CF29 | STULE4 | x b - b' | 存储一个小端无符号 32 位整数。 | 26 | 
| CF2A | STILE8 | x b - b' | 存储一个小端有符号 64 位整数。 | 26 | 
| CF2B | STULE8 | x b - b' | 存储一个小端无符号 64 位整数。 | 26 | 
| CF30 | BDEPTH | b - x | 返回 构建器 b的深度。如果b中没有存储cell引用,则x=0;否则x是对b中引用的cell的深度的最大值加 1。 | 26 | 
| CF31 | BBITS | b - x | 返回已经存储在 构建器 b中的数据位数。 | 26 | 
| CF32 | BREFS | b - y | 返回已经存储在 b中的cell引用数。 | 26 | 
| CF33 | BBITREFS | b - x y | 返回 b中数据位数和cell引用数。 | 26 | 
| CF35 | BREMBITS | b - x' | 返回仍然可以存储在 b中的数据位数。 | 26 | 
| CF36 | BREMREFS | b - y' | 返回仍然可以存储在 b中的引用数。 | 26 | 
| CF37 | BREMBITREFS | b - x' y' | 返回仍然可以存储在 b中的数据位数和引用数。 | 26 | 
| CF38cc | [cc+1] BCHKBITS# | b - | 检查是否能将 cc+1位存储到b中,其中0 <= cc <= 255。 | 34/84 | 
| CF39 | BCHKBITS | b x -  | 检查是否能将 x位存储到b中,0 <= x <= 1023。如果b中没有足够空间存储x更多位,或者x不在范围0...1023内,则抛出异常。 | 26/76 | 
| CF3A | BCHKREFS | b y -  | 检查是否能将 y引用存储到b中,0 <= y <= 7。 | 26/76 | 
| CF3B | BCHKBITREFS | b x y -  | 检查是否能将 x位和y引用存储到b中,0 <= x <= 1023,0 <= y <= 7。 | 26/76 | 
| CF3Ccc | [cc+1] BCHKBITSQ# | b - ? | 检查是否能将 cc+1位存储到b中,其中0 <= cc <= 255。 | 34 | 
| CF3D | BCHKBITSQ | b x - ? | 检查是否能将 x位存储到b中,0 <= x <= 1023。 | 26 | 
| CF3E | BCHKREFSQ | b y - ? | 检查是否能将 y引用存储到b中,0 <= y <= 7。 | 26 | 
| CF3F | BCHKBITREFSQ | b x y - ? | 检查是否能将 x位和y引用存储到b中,0 <= x <= 1023,0 <= y <= 7。 | 26 | 
| CF40 | STZEROES | b n - b' | 将 n个二进制零存储到 构建器b中。 | 26 | 
| CF41 | STONES | b n - b' | 将 n个二进制一存储到 构建器b中。 | 26 | 
| CF42 | STSAME | b n x - b' | 将 n个二进制x(0 <= x <= 1)存储到 构建器b中。 | 26 | 
| CFC0_xysss | [slice] STSLICECONST | b - b' | 存储一个常量子切片 sss。详情: sss由0 <= x <= 3个引用和最多8y+2个数据位组成,其中0 <= y <= 7。假定有完成位。注意,如果切片过大,汇编器可以将 STSLICECONST替换为PUSHSLICESTSLICER。 | 24 | 
| CF81 | STZERO | b - b' | 存储一个二进制零。 | 24 | 
| CF83 | STONE | b - b' | 存储一个二进制一。 | 24 | 
Cell 反序列化原语
| xxxxxxx 操作码 | xxxxxxxxxxxxxxxxxxxxxxxxxxxx Fift 语法 | xxxxxxxxxxxxxxxxx 堆栈 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 描述 | xxxx Gas | 
|---|---|---|---|---|
| D0 | CTOS | c - s | 将 cell 转换为 切片。请注意, c必须是普通cell,或者是自动 加载 以产生普通cellc'的异类cell,然后转换为 切片。 | 118/43 | 
| D1 | ENDS | s -  | 从堆栈中移除 切片 s,如果不为空则抛出异常。 | 18/68 | 
| D2cc | [cc+1] LDI | s - x s' | 从 切片 s中加载(即解析)一个有符号的cc+1-位整数x,并返回s的剩余部分作为s'。 | 26 | 
| D3cc | [cc+1] LDU | s - x s' | 从 切片 s中加载一个无符号cc+1-位整数x。 | 26 | 
| D4 | LDREF | s - c s' | 从 s中加载一个cell引用c。 | 18 | 
| D5 | LDREFRTOS | s - s' s'' | 等效于 LDREFSWAPCTOS。 | 118/43 | 
| D6cc | [cc+1] LDSLICE | s - s'' s' | 将 s的接下来的cc+1位切割为一个独立的 切片s''。 | 26 | 
| D700 | LDIX | s l - x s' | 从 切片 s中加载一个有符号的l-位(0 <= l <= 257)整数x,并返回s的剩余部分作为s'。 | 26 | 
| D701 | LDUX | s l - x s' | 从 s的前l位(0 <= l <= 256)加载一个无符号l-位整数x。 | 26 | 
| D702 | PLDIX | s l - x | 从 切片 s中预加载一个有符号l-位整数,0 <= l <= 257。 | 26 | 
| D703 | PLDUX | s l - x | 从 s中预加载一个无符号l-位整数,0 <= l <= 256。 | 26 | 
| D704 | LDIXQ | s l - x s' -1 or s 0 | LDIX的静默版本:类似地从s中加载一个有符号l-位整数,但在成功时返回一个成功标志位-1,失败时(如果s没有l位)返回0,而不是抛出cell下溢异常。 | 26 | 
| D705 | LDUXQ | s l - x s' -1 or s 0 | LDUX的静默版本。 | 26 | 
| D706 | PLDIXQ | s l - x -1 or 0 | PLDIX的静默版本。 | 26 | 
| D707 | PLDUXQ | s l - x -1 or 0 | PLDUX的静默版本。 | 26 | 
| D708cc | [cc+1] LDI_l | s - x s' | LDI的更长编码。 | 34 | 
| D709cc | [cc+1] LDU_l | s - x s' | LDU的更长编码。 | 34 | 
| D70Acc | [cc+1] PLDI | s - x | 从 切片 s中预加载一个有符号cc+1-位整数。 | 34 | 
| D70Bcc | [cc+1] PLDU | s - x | 从 s中预加载一个无符号cc+1-位整数。 | 34 | 
| D70Ccc | [cc+1] LDIQ | s - x s' -1 or s 0 | LDI的静默版本。 | 34 | 
| D70Dcc | [cc+1] LDUQ | s - x s' -1 or s 0 | LDU的静默版本。 | 34 | 
| D70Ecc | [cc+1] PLDIQ | s - x -1 or 0 | PLDI的静默版本。 | 34 | 
| D70Fcc | [cc+1] PLDUQ | s - x -1 or 0 | PLDU的静默版本。 | 34 | 
| D714_c | [32(c+1)] PLDUZ | s - s x | 从 切片 s中预加载前32(c+1)位到无符号整数x中,0 <= c <= 7。如果s比必要的短,缺失的位假定为零。此操作旨在与IFBITJMP及类似指令一起使用。 | 26 | 
| D718 | LDSLICEX | s l - s'' s' | 从 切片 s中加载前0 <= l <= 1023位到一个单独的 切片s''中,返回s的剩余部分作为s'。 | 26 | 
| D719 | PLDSLICEX | s l - s'' | 返回 s的前0 <= l <= 1023位作为s''。 | 26 | 
| D71A | LDSLICEXQ | s l - s'' s' -1 or s 0 | LDSLICEX的静默版本。 | 26 | 
| D71B | PLDSLICEXQ | s l - s' -1 or 0 | LDSLICEXQ的静默版本。 | 26 | 
| D71Ccc | [cc+1] LDSLICE_l | s - s'' s' | LDSLICE的更长编码。 | 34 | 
| D71Dcc | [cc+1] PLDSLICE | s - s'' | 返回 s的前0 < cc+1 <= 256位作为s''。 | 34 | 
| D71Ecc | [cc+1] LDSLICEQ | s - s'' s' -1 or s 0 | LDSLICE的静默版本。 | 34 | 
| D71Fcc | [cc+1] PLDSLICEQ | s - s'' -1 or 0 | PLDSLICE的静默版本。 | 34 | 
| D720 | SDCUTFIRST | s l - s' | 返回 s的前0 <= l <= 1023位。与PLDSLICEX等效。 | 26 | 
| D721 | SDSKIPFIRST | s l - s' | 返回除了 s的前0 <= l <= 1023位以外的所有位。与LDSLICEXNIP等效。 | 26 | 
| D722 | SDCUTLAST | s l - s' | 返回 s的后0 <= l <= 1023位。 | 26 | 
| D723 | SDSKIPLAST | s l - s' | 返回除了 s的后0 <= l <= 1023位以外的所有位。 | 26 | 
| D724 | SDSUBSTR | s l l' - s' | 返回 s的从偏移量0 <= l <= 1023开始的0 <= l' <= 1023位,从s的数据中提取出一个位子字符串。 | 26 | 
| D726 | SDBEGINSX | s s' - s'' | 检查 s是否以s'(数据位)开始,并在成功时从s中移除s'。失败抛出cell反序列化异常。原语SDPFXREV可以认为是SDBEGINSX的静默版本。 | 26 | 
| D727 | SDBEGINSXQ | s s' - s'' -1 or s 0 | SDBEGINSX的静默版本。 | 26 | 
| D72A_xsss | [slice] SDBEGINS | s - s'' | 检查 s是否以常量位串sss开始,sss的长度为8x+3(假定有完成位),其中0 <= x <= 127,并在成功时从s中移除sss。 | 31 | 
| D72E_xsss | [slice] SDBEGINSQ | s - s'' -1 or s 0 | SDBEGINS的静默版本。 | 31 | 
| D730 | SCUTFIRST | s l r - s' | 返回 s的前0 <= l <= 1023位和前0 <= r <= 4个引用。 | 26 | 
| D731 | SSKIPFIRST | s l r - s' | 返回除了 s的前l位和r个引用以外的所有内容。 | 26 | 
| D732 | SCUTLAST | s l r - s' | 返回 s的后0 <= l <= 1023个数据位和后0 <= r <= 4个引用。 | 26 | 
| D733 | SSKIPLAST | s l r - s' | 返回除了 s的后l位和r个引用以外的所有内容。 | 26 | 
| D734 | SUBSLICE | s l r l' r' - s' | 在跳过 s的前0 <= l <= 1023位和前0 <= r <= 4个引用后,返回来自 切片s的0 <= l' <= 1023位和0 <= r' <= 4个引用。 | 26 | 
| D736 | SPLIT | s l r - s' s'' | 将 s的前0 <= l <= 1023个数据位和前0 <= r <= 4个引用分割成s',并返回s的剩余部分作为s''。 | 26 | 
| D737 | SPLITQ | s l r - s' s'' -1 或 s 0 | SPLIT的静默版本。 | 26 | 
| D739 | c - s? | 将普通或异类cell转换为 切片,就好像它是一个普通cell一样。返回一个标志位,指示 c是否是异类的。如果是这样,其类型可以稍后从s的前八位中反序列化。 | ||
| D73A | c - c' | 加载异类cell c并返回一个普通cellc'。如果c已经是普通的,则不执行任何操作。如果c无法加载,抛出异常。 | ||
| D73B | c - c' -1 或 c 0 | 加载异类cell c并返回一个普通cellc'。如果c已经是普通的,则不执行任何操作。如果c无法加载,返回 0。 | ||
| D741 | SCHKBITS | s l -  | 检查 切片 s中是否至少有l个数据位。如果不是这种情况,抛出cell反序列化(即cell下溢)异常。 | 26/76 | 
| D742 | SCHKREFS | s r -  | 检查 切片 s中是否至少有r个引用。 | 26/76 | 
| D743 | SCHKBITREFS | s l r -  | 检查 切片 s中是否至少有l个数据位和r个引用。 | 26/76 | 
| D745 | SCHKBITSQ | s l - ? | 检查 切片 s中是否至少有l个数据位。 | 26 | 
| D746 | SCHKREFSQ | s r - ? | 检查 切片 s中是否至少有r个引用。 | 26 | 
| D747 | SCHKBITREFSQ | s l r - ? | 检查 切片 s中是否至少有l个数据位和r个引用。 | 26 | 
| D748 | PLDREFVAR | s n - c | 返回 切片 s的第n个cell引用,0 <= n <= 3。 | 26 | 
| D749 | SBITS | s - l | 返回 切片 s中的数据位数。 | 26 | 
| D74A | SREFS | s - r | 返回 切片 s中的引用数。 | 26 | 
| D74B | SBITREFS | s - l r | 返回 s中的数据位数和引用数。 | 26 | 
| D74E_n | [n] PLDREFIDX | s - c | 返回 切片 s的第n个cell引用,0 <= n <= 3。 | 26 | 
| D74C | PLDREF | s - c | 预加载 切片 的第一个cell引用。 | 26 | 
| D750 | LDILE4 | s - x s' | 加载一个小端有符号 32 位整数。 | 26 | 
| D751 | LDULE4 | s - x s' | 加载一个小端无符号 32 位整数。 | 26 | 
| D752 | LDILE8 | s - x s' | 加载一个小端有符号 64 位整数。 | 26 | 
| D753 | LDULE8 | s - x s' | 加载一个小端无符号 64 位整数。 | 26 | 
| D754 | PLDILE4 | s - x | 预加载一个小端有符号 32 位整数。 | 26 | 
| D755 | PLDULE4 | s - x | 预加载一个小端无符号 32 位整数。 | 26 | 
| D756 | PLDILE8 | s - x | 预加载一个小端有符号 64 位整数。 | 26 | 
| D757 | PLDULE8 | s - x | 预加载一个小端无符号 64 位整数。 | 26 | 
| D758 | LDILE4Q | s - x s' -1 或 s 0 | 静默加载一个小端有符号 32 位整数。 | 26 | 
| D759 | LDULE4Q | s - x s' -1 或 s 0 | 静默加载一个小端无符号 32 位整数。 | 26 | 
| D75A | LDILE8Q | s - x s' -1 或 s 0 | 静默加载一个小端有符号 64 位整数。 | 26 | 
| D75B | LDULE8Q | s - x s' -1 或 s 0 | 静默加载一个小端无符号 64 位整数。 | 26 | 
| D75C | PLDILE4Q | s - x -1 或 0 | 静默预加载一个小端有符号 32 位整数。 | 26 | 
| D75D | PLDULE4Q | s - x -1 或 0 | 静默预加载一个小端无符号 32 位整数。 | 26 | 
| D75E | PLDILE8Q | s - x -1 或 0 | 静默预加载一个小端有符号 64 位整数。 | 26 | 
| D75F | PLDULE8Q | s - x -1 或 0 | 静默预加载一个小端无符号 64 位整数。 | 26 | 
| D760 | LDZEROES | s - n s' | 返回 s中前导零位的计数n,并从s中移除这些位。 | 26 | 
| D761 | LDONES | s - n s' | 返回 s中前导一位的计数n,并从s中移除这些位。 | 26 | 
| D762 | LDSAME | s x - n s' | 返回 s中与0 <= x <= 1相等的前导位的计数n,并从s中移除这些位。 | 26 | 
| D764 | SDEPTH | s - x | 返回 切片 s的深度。如果s没有引用,则x=0;否则x是从s引用的cell的最大深度加 1。 | 26 | 
| D765 | CDEPTH | c - x | 返回 cell c的深度。如果c没有引用,则x=0;否则x是从c引用的cell的最大深度加 1。如果c是 空(Null) 而不是 cell,返回零。 | 26 |