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 | STBREFR ENDCST | b b'' - b | 等同于 ENDC SWAP STREF 。 | 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'' | 等同于 SWAP STBREFR 。 | 526 |
CF12 | STSLICE_l | s b - b' | STSLICE 的更长版本。 | 26 |
CF13 | STB | b' b - b'' | 将 构建器 b' 中的所有数据附加到 构建器 b 中。 | 26 |
CF14 | STREFR | b c - b' | 等同于 SWAP STREF 。 | 26 |
CF15 | STBREFR_l | b b' - b'' | STBREFR 的更长编码。 | 526 |
CF16 | STSLICER | b s - b' | 等同于 SWAP STSLICE 。 | 26 |
CF17 | STBR BCONCAT | b b' - b'' | 连接两个构建器。 等同于 SWAP STB 。 | 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 | STBRQ BCONCATQ | b b' - b b' -1 or b'' 0 | STBR 的静默版本。 | 26 |
CF20 | [ref] STREFCONST | b - b’ | 等同于 PUSHREF STREFR 。 | 26 |
CF21 | [ref] [ref] STREF2CONST | b - b’ | 等同于 STREFCONST STREFCONST 。 | 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 替换为 PUSHSLICE STSLICER 。 | 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,或者是自动 加载 以产生普通cell c' 的异类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'' | 等效于 LDREF SWAP CTOS 。 | 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 位以外的所有位。与 LDSLICEX NIP 等效。 | 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 并返回一个普通cell c' 。如果 c 已经是普通的,则不执行任何操作。如果 c 无法加载,抛出异常。 | ||
D73B | c - c' -1 或 c 0 | 加载异类cell c 并返回一个普通cell c' 。如果 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 |