跳到主要内容

Cell原语

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

TVM 指令内容列表

Cell 原语

Cell 序列化原语

xxxxxxx
操作码
xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Fift 语法
xxxxxxxxxxxxxxxxx
堆栈
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
描述
xxxx
Gas
C8NEWC- b创建一个新的空 构建器18
C9ENDCb - c构建器 转换为普通的 cell518
CAcc[cc+1] STIx b - b'0 <= cc <= 255 的有符号 cc+1-位整数 x 存入 构建器 b 中,如果 x 不适合于 cc+1 位,则抛出范围检查异常。26
CBcc[cc+1] STUx b - b'将无符号的 cc+1-位整数 x 存入 构建器 b 中。在其他方面,它与 STI 类似。26
CCSTREFc b - b'cell c 的引用存入 构建器 b 中。18
CDSTBREFR
ENDCST
b b'' - b等同于 ENDC SWAP STREF518
CESTSLICEs b - b'分片 s 存入 构建器 b 中。18
CF00STIXx b l - b'0 <= l <= 257,将有符号 l-位整数 x 存入 b 中。26
CF01STUXx b l - b'0 <= l <= 256,将无符号 l-位整数 x 存入 b 中。26
CF02STIXRb x l - b'STIX 类似,但参数顺序不同。26
CF03STUXRb x l - b'STUX 类似,但参数顺序不同。26
CF04STIXQx b l - x b f or b' 0STIX 的静默版本。如果 b 中没有空间,将 b'=bf=-1
如果 x 不适合于 l 位,将 b'=bf=1
如果操作成功,b' 是新的 构建器f=0
然而,0 <= l <= 257,如果不是这样,则抛出范围检查异常。
26
CF05STUXQx b l - x b f or b' 0STUX 的静默版本。26
CF06STIXRQb x l - b x f or b' 0STIXR 的静默版本。26
CF07STUXRQb x l - b x f or b' 0STUXR 的静默版本。26
CF08cc[cc+1] STI_lx b - b'[cc+1] STI 的更长版本。34
CF09cc[cc+1] STU_lx b - b'[cc+1] STU 的更长版本。34
CF0Acc[cc+1] STIRb x - b'等同于 SWAP [cc+1] STI34
CF0Bcc[cc+1] STURb x - b'等同于 SWAP [cc+1] STU34
CF0Ccc[cc+1] STIQx b - x b f or b' 0STI 的静默版本。34
CF0Dcc[cc+1] STUQx b - x b f or b' 0STU 的静默版本。34
CF0Ecc[cc+1] STIRQb x - b x f or b' 0STIR 的静默版本。34
CF0Fcc[cc+1] STURQb x - b x f or b' 0STUR 的静默版本。34
CF10STREF_lc b - b'STREF 的更长版本。26
CF11STBREFb' b - b''等同于 SWAP STBREFR526
CF12STSLICE_ls b - b'STSLICE 的更长版本。26
CF13STBb' b - b''构建器 b' 中的所有数据附加到 构建器 b 中。26
CF14STREFRb c - b'等同于 SWAP STREF26
CF15STBREFR_lb b' - b''STBREFR 的更长编码。526
CF16STSLICERb s - b'等同于 SWAP STSLICE26
CF17STBR
BCONCAT
b b' - b''连接两个构建器。
等同于 SWAP STB
26
CF18STREFQc b - c b -1 or b' 0STREF 的静默版本。26
CF19STBREFQb' b - b' b -1 or b'' 0STBREF 的静默版本。526
CF1ASTSLICEQs b - s b -1 or b' 0STSLICE 的静默版本。26
CF1BSTBQb' b - b' b -1 or b'' 0STB 的静默版本。26
CF1CSTREFRQb c - b c -1 or b' 0STREFR 的静默版本。26
CF1DSTBREFRQb b' - b b' -1 or b'' 0STBREFR 的静默版本。526
CF1ESTSLICERQb s - b s -1 or b'' 0STSLICER 的静默版本。26
CF1FSTBRQ
BCONCATQ
b b' - b b' -1 or b'' 0STBR 的静默版本。26
CF20[ref] STREFCONSTb - b’等同于 PUSHREF STREFR26
CF21[ref] [ref] STREF2CONSTb - b’等同于 STREFCONST STREFCONST26
CF23b x - c如果 x!=0,从 构建器 b 创建一个 特殊异类 cell。
异类cell的类型必须存储在 b 的前 8 位中。
如果 x=0,它相当于 ENDC。否则,将在创建异类cell之前对 b 的数据和引用执行一些有效性检查。
526
CF28STILE4x b - b'存储一个小端有符号 32 位整数。26
CF29STULE4x b - b'存储一个小端无符号 32 位整数。26
CF2ASTILE8x b - b'存储一个小端有符号 64 位整数。26
CF2BSTULE8x b - b'存储一个小端无符号 64 位整数。26
CF30BDEPTHb - x返回 构建器 b 的深度。如果 b 中没有存储cell引用,则 x=0;否则 x 是对 b 中引用的cell的深度的最大值加 1。26
CF31BBITSb - x返回已经存储在 构建器 b 中的数据位数。26
CF32BREFSb - y返回已经存储在 b 中的cell引用数。26
CF33BBITREFSb - x y返回 b 中数据位数和cell引用数。26
CF35BREMBITSb - x'返回仍然可以存储在 b 中的数据位数。26
CF36BREMREFSb - y'返回仍然可以存储在 b 中的引用数。26
CF37BREMBITREFSb - x' y'返回仍然可以存储在 b 中的数据位数和引用数。26
CF38cc[cc+1] BCHKBITS#b -检查是否能将 cc+1 位存储到 b 中,其中 0 <= cc <= 25534/84
CF39BCHKBITSb x - 检查是否能将 x 位存储到 b 中,0 <= x <= 1023。如果 b 中没有足够空间存储 x 更多位,或者 x 不在范围 0...1023 内,则抛出异常。26/76
CF3ABCHKREFSb y - 检查是否能将 y 引用存储到 b 中,0 <= y <= 726/76
CF3BBCHKBITREFSb x y - 检查是否能将 x 位和 y 引用存储到 b 中,0 <= x <= 10230 <= y <= 726/76
CF3Ccc[cc+1] BCHKBITSQ#b - ?检查是否能将 cc+1 位存储到 b 中,其中 0 <= cc <= 25534
CF3DBCHKBITSQb x - ?检查是否能将 x 位存储到 b 中,0 <= x <= 102326
CF3EBCHKREFSQb y - ?检查是否能将 y 引用存储到 b 中,0 <= y <= 726
CF3FBCHKBITREFSQb x y - ?检查是否能将 x 位和 y 引用存储到 b 中,0 <= x <= 10230 <= y <= 726
CF40STZEROESb n - b'n 个二进制零存储到 构建器 b 中。26
CF41STONESb n - b'n 个二进制一存储到 构建器 b 中。26
CF42STSAMEb n x - b'n 个二进制 x0 <= x <= 1)存储到 构建器 b 中。26
CFC0_xysss[slice] STSLICECONSTb - b'存储一个常量子切片 sss
详情: sss0 <= x <= 3 个引用和最多 8y+2 个数据位组成,其中 0 <= y <= 7。假定有完成位。
注意,如果切片过大,汇编器可以将 STSLICECONST 替换为 PUSHSLICE STSLICER
24
CF81STZEROb - b'存储一个二进制零。24
CF83STONEb - b'存储一个二进制一。24

Cell 反序列化原语

xxxxxxx
操作码
xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Fift 语法
xxxxxxxxxxxxxxxxx
堆栈
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
描述
xxxx
Gas
D0CTOSc - scell 转换为 切片。请注意,c 必须是普通cell,或者是自动 加载 以产生普通cell c' 的异类cell,然后转换为 切片118/43
D1ENDSs - 从堆栈中移除 切片 s,如果不为空则抛出异常。18/68
D2cc[cc+1] LDIs - x s'切片 s 中加载(即解析)一个有符号的 cc+1-位整数 x,并返回 s 的剩余部分作为 s'26
D3cc[cc+1] LDUs - x s'切片 s 中加载一个无符号 cc+1-位整数 x26
D4LDREFs - c s's 中加载一个cell引用 c18
D5LDREFRTOSs - s' s''等效于 LDREF SWAP CTOS118/43
D6cc[cc+1] LDSLICEs - s'' s's 的接下来的 cc+1 位切割为一个独立的 切片 s''26
D700LDIXs l - x s'切片 s 中加载一个有符号的 l-位(0 <= l <= 257)整数 x,并返回 s 的剩余部分作为 s'26
D701LDUXs l - x s's 的前 l 位(0 <= l <= 256)加载一个无符号 l-位整数 x26
D702PLDIXs l - x切片 s 中预加载一个有符号 l-位整数,0 <= l <= 25726
D703PLDUXs l - xs 中预加载一个无符号 l-位整数,0 <= l <= 25626
D704LDIXQs l - x s' -1 or s 0LDIX 的静默版本:类似地从 s 中加载一个有符号 l-位整数,但在成功时返回一个成功标志位 -1,失败时(如果 s 没有 l 位)返回 0,而不是抛出cell下溢异常。26
D705LDUXQs l - x s' -1 or s 0LDUX 的静默版本。26
D706PLDIXQs l - x -1 or 0PLDIX 的静默版本。26
D707PLDUXQs l - x -1 or 0PLDUX 的静默版本。26
D708cc[cc+1] LDI_ls - x s'LDI 的更长编码。34
D709cc[cc+1] LDU_ls - x s'LDU 的更长编码。34
D70Acc[cc+1] PLDIs - x切片 s 中预加载一个有符号 cc+1-位整数。34
D70Bcc[cc+1] PLDUs - xs 中预加载一个无符号 cc+1-位整数。34
D70Ccc[cc+1] LDIQs - x s' -1 or s 0LDI 的静默版本。34
D70Dcc[cc+1] LDUQs - x s' -1 or s 0LDU 的静默版本。34
D70Ecc[cc+1] PLDIQs - x -1 or 0PLDI 的静默版本。34
D70Fcc[cc+1] PLDUQs - x -1 or 0PLDU 的静默版本。34
D714_c[32(c+1)] PLDUZs - s x切片 s 中预加载前 32(c+1) 位到无符号整数 x 中,0 <= c <= 7。如果 s 比必要的短,缺失的位假定为零。此操作旨在与 IFBITJMP 及类似指令一起使用。26
D718LDSLICEXs l - s'' s'切片 s 中加载前 0 <= l <= 1023 位到一个单独的 切片 s'' 中,返回 s 的剩余部分作为 s'26
D719PLDSLICEXs l - s''返回 s 的前 0 <= l <= 1023 位作为 s''26
D71ALDSLICEXQs l - s'' s' -1 or s 0LDSLICEX 的静默版本。26
D71BPLDSLICEXQs l - s' -1 or 0LDSLICEXQ 的静默版本。26
D71Ccc[cc+1] LDSLICE_ls - s'' s'LDSLICE 的更长编码。34
D71Dcc[cc+1] PLDSLICEs - s''返回 s 的前 0 < cc+1 <= 256 位作为 s''34
D71Ecc[cc+1] LDSLICEQs - s'' s' -1 or s 0LDSLICE 的静默版本。34
D71Fcc[cc+1] PLDSLICEQs - s'' -1 or 0PLDSLICE 的静默版本。34
D720SDCUTFIRSTs l - s'返回 s 的前 0 <= l <= 1023 位。与 PLDSLICEX 等效。26
D721SDSKIPFIRSTs l - s'返回除了 s 的前 0 <= l <= 1023 位以外的所有位。与 LDSLICEX NIP 等效。26
D722SDCUTLASTs l - s'返回 s 的后 0 <= l <= 1023 位。26
D723SDSKIPLASTs l - s'返回除了 s 的后 0 <= l <= 1023 位以外的所有位。26
D724SDSUBSTRs l l' - s'返回 s 的从偏移量 0 <= l <= 1023 开始的 0 <= l' <= 1023 位,从 s 的数据中提取出一个位子字符串。26
D726SDBEGINSXs s' - s''检查 s 是否以 s'(数据位)开始,并在成功时从 s 中移除 s'。失败抛出cell反序列化异常。原语 SDPFXREV 可以认为是 SDBEGINSX 的静默版本。26
D727SDBEGINSXQs s' - s'' -1 or s 0SDBEGINSX 的静默版本。26
D72A_xsss[slice] SDBEGINSs - s''检查 s 是否以常量位串 sss 开始,sss 的长度为 8x+3(假定有完成位),其中 0 <= x <= 127,并在成功时从 s 中移除 sss31
D72E_xsss[slice] SDBEGINSQs - s'' -1 or s 0SDBEGINS 的静默版本。31
D730SCUTFIRSTs l r - s'返回 s 的前 0 <= l <= 1023 位和前 0 <= r <= 4 个引用。26
D731SSKIPFIRSTs l r - s'返回除了 s 的前 l 位和 r 个引用以外的所有内容。26
D732SCUTLASTs l r - s'返回 s 的后 0 <= l <= 1023 个数据位和后 0 <= r <= 4 个引用。26
D733SSKIPLASTs l r - s'返回除了 s 的后 l 位和 r 个引用以外的所有内容。26
D734SUBSLICEs l r l' r' - s'在跳过 s 的前 0 <= l <= 1023 位和前 0 <= r <= 4 个引用后,返回来自 切片 s0 <= l' <= 1023 位和 0 <= r' <= 4 个引用。26
D736SPLITs l r - s' s''s 的前 0 <= l <= 1023 个数据位和前 0 <= r <= 4 个引用分割成 s',并返回 s 的剩余部分作为 s''26
D737SPLITQs l r - s' s'' -1 或 s 0SPLIT 的静默版本。26
D739c - s?将普通或异类cell转换为 切片,就好像它是一个普通cell一样。返回一个标志位,指示 c 是否是异类的。如果是这样,其类型可以稍后从 s 的前八位中反序列化。
D73Ac - c'加载异类cell c 并返回一个普通cell c'。如果 c 已经是普通的,则不执行任何操作。如果 c 无法加载,抛出异常。
D73Bc - c' -1 或 c 0加载异类cell c 并返回一个普通cell c'。如果 c 已经是普通的,则不执行任何操作。如果 c 无法加载,返回 0。
D741SCHKBITSs l - 检查 切片 s 中是否至少有 l 个数据位。如果不是这种情况,抛出cell反序列化(即cell下溢)异常。26/76
D742SCHKREFSs r - 检查 切片 s 中是否至少有 r 个引用。26/76
D743SCHKBITREFSs l r - 检查 切片 s 中是否至少有 l 个数据位和 r 个引用。26/76
D745SCHKBITSQs l - ?检查 切片 s 中是否至少有 l 个数据位。26
D746SCHKREFSQs r - ?检查 切片 s 中是否至少有 r 个引用。26
D747SCHKBITREFSQs l r - ?检查 切片 s 中是否至少有 l 个数据位和 r 个引用。26
D748PLDREFVARs n - c返回 切片 s 的第 n 个cell引用,0 <= n <= 326
D749SBITSs - l返回 切片 s 中的数据位数。26
D74ASREFSs - r返回 切片 s 中的引用数。26
D74BSBITREFSs - l r返回 s 中的数据位数和引用数。26
D74E_n[n] PLDREFIDXs - c返回 切片 s 的第 n 个cell引用,0 <= n <= 326
D74CPLDREFs - c预加载 切片 的第一个cell引用。26
D750LDILE4s - x s'加载一个小端有符号 32 位整数。26
D751LDULE4s - x s'加载一个小端无符号 32 位整数。26
D752LDILE8s - x s'加载一个小端有符号 64 位整数。26
D753LDULE8s - x s'加载一个小端无符号 64 位整数。26
D754PLDILE4s - x预加载一个小端有符号 32 位整数。26
D755PLDULE4s - x预加载一个小端无符号 32 位整数。26
D756PLDILE8s - x预加载一个小端有符号 64 位整数。26
D757PLDULE8s - x预加载一个小端无符号 64 位整数。26
D758LDILE4Qs - x s' -1 或 s 0静默加载一个小端有符号 32 位整数。26
D759LDULE4Qs - x s' -1 或 s 0静默加载一个小端无符号 32 位整数。26
D75ALDILE8Qs - x s' -1 或 s 0静默加载一个小端有符号 64 位整数。26
D75BLDULE8Qs - x s' -1 或 s 0静默加载一个小端无符号 64 位整数。26
D75CPLDILE4Qs - x -1 或 0静默预加载一个小端有符号 32 位整数。26
D75DPLDULE4Qs - x -1 或 0静默预加载一个小端无符号 32 位整数。26
D75EPLDILE8Qs - x -1 或 0静默预加载一个小端有符号 64 位整数。26
D75FPLDULE8Qs - x -1 或 0静默预加载一个小端无符号 64 位整数。26
D760LDZEROESs - n s'返回 s 中前导零位的计数 n,并从 s 中移除这些位。26
D761LDONESs - n s'返回 s 中前导一位的计数 n,并从 s 中移除这些位。26
D762LDSAMEs x - n s'返回 s 中与 0 <= x <= 1 相等的前导位的计数 n,并从 s 中移除这些位。26
D764SDEPTHs - x返回 切片 s 的深度。如果 s 没有引用,则 x=0;否则 x 是从 s 引用的cell的最大深度加 1。26
D765CDEPTHc - x返回 cell c 的深度。如果 c 没有引用,则 x=0;否则 x 是从 c 引用的cell的最大深度加 1。如果 c空(Null) 而不是 cell,返回零。26

TVM 指令内容列表