跳到主要内容

常量或字面量原语

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

TVM 指令内容列表

常量或字面量原语

整数和布尔常量

xxxxxxx
操作码
xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Fift 语法
xxxxxxxxxxxxxxxxx
堆栈
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
描述
xxxx
Gas
7i[x] PUSHINT
[x] INT
- x将整数 x 压入栈。-5 <= x <= 10
这里的 i 等于 x 的四个低阶位 (i=x mod 16)。
18
70ZERO
FALSE
- 018
71ONE- 118
72TWO- 218
7ATEN- 1018
7FTRUE- -118
80xx[xx] PUSHINT
[xx] INT
- xx将整数 xx 压入栈。-128 <= xx <= 12726
81xxxx[xxxx] PUSHINT
[xxxx] INT
- xxxx将整数 xxxx 压入栈。-2^15 <= xx < 2^1534
82lxxx[xxx] PUSHINT
[xxx] INT
- xxx将整数 xxx 压入栈。
细节: 5位的 0 <= l <= 30 决定了有符号大端整数 xxx 的长度 n=8l+19
此指令的总长度为 l+4 字节或 n+13=8l+32 位。
23
83xx[xx+1] PUSHPOW2- 2^(xx+1)(静默地)推送 2^(xx+1),对于 0 <= xx <= 255
2^256 是一个 NaN
26
83FFPUSHNAN- NaN推送一个 NaN26
84xx[xx+1] PUSHPOW2DEC- 2^(xx+1)-1推送 2^(xx+1)-1,对于 0 <= xx <= 25526
85xx[xx+1] PUSHNEGPOW2- -2^(xx+1)推送 -2^(xx+1),对于 0 <= xx <= 25526

常量切片、continuation、cell和引用

xxxxxxx
操作码
xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Fift 语法
xxxxxxxxxxxxxxxxx
堆栈
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
描述
xxxx
Gas
88[ref] PUSHREF- c将引用 ref 推送到栈中。
细节:cc.code 的第一个引用作为 cell 推入栈(并从当前continuation中移除此引用)。
18
89[ref] PUSHREFSLICE- s类似于 PUSHREF,但将cell转换为 切片118/43
8A[ref] PUSHREFCONT- cont类似于 PUSHREFSLICE,但将cell制作成一个简单的普通 continuation118/43
8Bxsss[slice] PUSHSLICE
[slice] SLICE
- s将切片 slice 推入栈。
细节: 推送 cc.code 的 (前缀) 子切片,其由其前 8x+4 位和零个引用组成(即,基本上是一个位串),其中 0 <= x <= 15
假设有一个完成标记,意味着所有尾随零和最后一个二进制一(如果存在)都从这个位串中被移除。
如果原始位串仅由零组成,则会推入一个空切片。
22
8Crxxssss[slice] PUSHSLICE
[slice] SLICE
- s将切片 slice 推入栈。
细节: 推送 cc.code 的 (前缀) 子切片,其由其前 1 <= r+1 <= 4 个引用和最多前 8xx+1 位数据组成,其中 0 <= xx <= 31
也假设有一个完成标记。
25
8Drxxsssss[slice] PUSHSLICE
[slice] SLICE
- s将切片 slice 推入栈。
细节: 推送 cc.code 的子切片,其由 0 <= r <= 4 个引用和最多 8xx+6 位数据组成,其中 0 <= xx <= 127
假设有一个完成标记。
28
x{} PUSHSLICE
x{ABCD1234} PUSHSLICE
b{01101} PUSHSLICE
- sPUSHSLICE 的示例。
x{} 是一个空切片。x{...} 是一个十六进制字面量。b{...} 是一个二进制字面量。
关于切片字面量的更多信息在这里
注意,汇编程序可以在某些情况下(例如,如果当前continuation中没有足够的空间)将 PUSHSLICE 替换为 PUSHREFSLICE
<b x{AB12} s, b> PUSHREF
<b x{AB12} s, b> PUSHREFSLICE
- c/sPUSHREFPUSHREFSLICE 的示例。
关于在 fift 中构建cell的更多信息在这里
8F_rxxcccc[builder] PUSHCONT
[builder] CONT
- cbuilder 中推送continuation。
细节: 推送由 cc.code 的前 0 <= r <= 3 个引用和前 0 <= xx <= 127 字节制成的简单普通continuation cccc
26
9xccc[builder] PUSHCONT
[builder] CONT
- cbuilder 中推送continuation。
细节: 推送一个 x 字节的continuation,对于 0 <= x <= 15
18
<{ code }> PUSHCONT
<{ code }> CONT
CONT:<{ code }>
- c用代码 code 推送continuation。
注意,汇编程序可以在某些情况下(例如,如果当前continuation中没有足够的空间)将 PUSHCONT 替换为 PUSHREFCONT

TVM 指令内容列表