跳到主要内容

元组、列表和 Null 原语

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

TVM 指令内容列表

元组、列表和 Null 原语

xxxxxxx
操作码
xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Fift 语法
xxxxxxxxxxxxxxxxx
堆栈
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
描述
xxxx
Gas
6DNULL
PUSHNULL
- null推入类型为 Null 的唯一值。18
6EISNULLx - ?检查 x 是否为 Null,根据情况分别返回 -1018
6F0n[n] TUPLEx_1 ... x_n - t创建包含 nx_1,..., x_n 的新 Tuple t=(x_1, … ,x_n)
0 <= n <= 15
26+n
6F00NIL- t推入长度为零的唯一 Tuple t=()26
6F01SINGLEx - t创建单例 t:=(x),即长度为一的 Tuple27
6F02PAIR
CONS
x y - t创建对 t:=(x,y)28
6F03TRIPLEx y z - t创建三元组 t:=(x,y,z)29
6F1k[k] INDEXt - x返回 Tuple t 的第 k 个元素。
0 <= k <= 15
26
6F10FIRST
CAR
t - x返回 Tuple 的第一个元素。26
6F11SECOND
CDR
t - y返回 Tuple 的第二个元素。26
6F12THIRDt - z返回 Tuple 的第三个元素。26
6F2n[n] UNTUPLEt - x_1 ... x_n解包长度等于 0 <= n <= 15Tuple t=(x_1,...,x_n)
如果 t 不是 Tuple\|t\| != n,则抛出类型检查异常。
26+n
6F21UNSINGLEt - x解包单例 t=(x)27
6F22UNPAIR
UNCONS
t - x y解包对 t=(x,y)28
6F23UNTRIPLEt - x y z解包三元组 t=(x,y,z)29
6F3k[k] UNPACKFIRSTt - x_1 ... x_k解包 Tuple t 的前 0 <= k <= 15 个元素。
如果 \|t\|<k,抛出类型检查异常。
26+k
6F30CHKTUPLEt -检查 t 是否为 Tuple。如果不是,则抛出类型检查异常。26
6F4n[n] EXPLODEt - x_1 ... x_m m解包 Tuple t=(x_1,...,x_m) 并返回其长度 m,但仅当 m <= n <= 15。否则抛出类型检查异常。26+m
6F5k[k] SETINDEXt x - t'计算 Tuple t',它与 t 仅在位置 t'_{k+1} 上不同,该位置被设置为 x
0 <= k <= 15
如果 k >= \|t\|,则抛出范围检查异常。
26+\|t\|
6F50SETFIRSTt x - t'Tuple t 的第一个组件设置为 x 并返回结果 Tuple t'26+\|t\|
6F51SETSECONDt x - t'Tuple t 的第二个组件设置为 x 并返回结果 Tuple t'26+\|t\|
6F52SETTHIRDt x - t'Tuple t 的第三个组件设置为 x 并返回结果 Tuple t'26+\|t\|
6F6k[k] INDEXQt - x返回 Tuple t 的第 k 个元素,其中 0 <= k <= 15。换句话说,如果 t=(x_1,...,x_n),则返回 x_{k+1}。如果 k>=ntNull,则返回 Null 而不是 x26
6F60FIRSTQ
CARQ
t - x返回 Tuple 的第一个元素。26
6F61SECONDQ
CDRQ
t - y返回 Tuple 的第二个元素。26
6F62THIRDQt - z返回 Tuple 的第三个元素。26
6F7k[k] SETINDEXQt x - t'Tuple t 中设置第 k 个组件为 x,其中 0 <= k < 16,并返回结果 Tuple t'
如果 \|t\| <= k,首先通过将所有新组件设置为 Null 来将原始 Tuple 扩展到长度 n’=k+1。如果原始值 tNull,则将其视为空 Tuple。如果 t 既不是 Null 也不是 Tuple,抛出异常。如果 xNull\|t\| <= ktNull,则总是返回 t'=t(并且不消耗元组创建 gas)。
26+\|t’\|
6F70SETFIRSTQt x - t'Tuple t 的第一个组件设置为 x 并返回结果 元组 t'26+\|t’\|
6F71SETSECONDQt x - t'Tuple t 的第二个组件设置为 x 并返回结果 元组 t'26+\|t’\|
6F72SETTHIRDQt x - t'Tuple组 t 的第三个组件设置为 x 并返回结果 元组 t'26+\|t’\|
6F80TUPLEVARx_1 ... x_n n - t以类似于 TUPLE 的方式创建长度为 n 的新 Tuple t,但 0 <= n <= 255 从堆栈获取。26+n
6F81INDEXVARt k - x类似于 k INDEX,但 0 <= k <= 254 从堆栈获取。26
6F82UNTUPLEVARt n - x_1 ... x_n类似于 n UNTUPLE,但 0 <= n <= 255 从堆栈获取。26+n
6F83UNPACKFIRSTVARt n - x_1 ... x_n类似于 n UNPACKFIRST,但 0 <= n <= 255 从堆栈获取。26+n
6F84EXPLODEVARt n - x_1 ... x_m m类似于 n EXPLODE,但 0 <= n <= 255 从堆栈获取。26+m
6F85SETINDEXVARt x k - t'类似于 k SETINDEX,但 0 <= k <= 254 从堆栈获取。26+\|t’\|
6F86INDEXVARQt k - x类似于 n INDEXQ,但 0 <= k <= 254 从堆栈获取。26
6F87SETINDEXVARQt x k - t'类似于 k SETINDEXQ,但 0 <= k <= 254 从堆栈获取。26+\|t’\|
6F88TLENt - n返回 Tuple 的长度。26
6F89QTLENt - n or -1类似于 TLEN,但如果 t 不是 Tuple,则返回 -126
6F8AISTUPLEt - ?根据 t 是否为 Tuple,分别返回 -1026
6F8BLASTt - x返回非空 Tuple t 的最后一个元素。26
6F8CTPUSH
COMMA
t x - t'将值 x 附加到 Tuple t=(x_1,...,x_n),但仅当结果 Tuple t'=(x_1,...,x_n,x) 的长度最多为 255 时。否则抛出类型检查异常。26+\|t’\|
6F8DTPOPt - t' x从非空 Tuple t=(x_1,...,x_n) 分离最后一个元素 x=x_n,并返回结果 Tuple t'=(x_1,...,x_{n-1}) 和原始的最后一个元素 x26+\|t’\|
6FA0NULLSWAPIFx - x or null x在顶部的 Integer x 下推入一个 Null,但仅当 x!=0 时。26
6FA1NULLSWAPIFNOTx - x or null x在顶部的 Integer x 下推入一个 Null,但仅当 x=0 时。可用于在类似于 PLDUXQ 这样的静默原语后进行堆栈对齐。26
6FA2NULLROTRIFx y - x y or null x y在顶部第二个堆栈条目下推入一个 Null,但仅当顶部的 Integer y 非零时。26
6FA3NULLROTRIFNOTx y - x y or null x y在顶部第二个堆栈条目下推入一个 Null,但仅当顶部的 Integer y 为零时。可用于在类似于 LDUXQ 这样的静默原语后进行堆栈对齐。26
6FA4NULLSWAPIF2x - x or null null x在顶部的 Integer x 下推入两个 Null,但仅当 x!=0 时。
等同于 NULLSWAPIF NULLSWAPIF
26
6FA5NULLSWAPIFNOT2x - x or null null x在顶部的 Integer x 下推入两个 Null,但仅当 x=0 时。
等同于 NULLSWAPIFNOT NULLSWAPIFNOT
26
6FA6NULLROTRIF2x y - x y or null null x y在顶部第二个堆栈条目下推入两个 Null,但仅当顶部的 Integer y 非零时。
等同于 NULLROTRIF NULLROTRIF
26
6FA7NULLROTRIFNOT2x y - x y 或 null null x y仅当最顶部的 Integer y 为零时,才在顶部第二个堆栈条目下推入两个 Null
等同于两次 NULLROTRIFNOT
26
6FBij[i] [j] INDEX2t - x对于 0 <= i,j <= 3,恢复 x=(t_{i+1})_{j+1}
等同于 [i] INDEX [j] INDEX
26
6FB4CADRt - x恢复 x=(t_2)_126
6FB5CDDRt - x恢复 x=(t_2)_226
6FE_ijk[i] [j] [k] INDEX3t - x恢复 x=t_{i+1}_{j+1}_{k+1}
0 <= i,j,k <= 3
等同于 [i] [j] INDEX2 [k] INDEX
26
6FD4CADDRt - x恢复 x=t_2_2_126
6FD5CDDDRt - x恢复 x=t_2_2_226

TVM 指令内容列表