常量或字面量原语
操作码 | 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 |
70 | ZERO FALSE | - 0 | 18 | |
71 | ONE | - 1 | 18 | |
72 | TWO | - 2 | 18 | |
7A | TEN | - 10 | 18 | |
7F | TRUE | - -1 | 18 | |
80xx | [xx] PUSHINT [xx] INT | - xx | 将整数 xx 压入栈。-128 <= xx <= 127 。 | 26 |
81xxxx | [xxxx] PUSHINT [xxxx] INT | - xxxx | 将整数 xxxx 压入栈。-2^15 <= xx < 2^15 。 | 34 |
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 |
83FF | PUSHNAN | - NaN | 推送一个 NaN 。 | 26 |
84xx | [xx+1] PUSHPOW2DEC | - 2^(xx+1)-1 | 推送 2^(xx+1)-1 ,对于 0 <= xx <= 255 。 | 26 |
85xx | [xx+1] PUSHNEGPOW2 | - -2^(xx+1) | 推送 -2^(xx+1) ,对于 0 <= xx <= 255 。 | 26 |
常量切片、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制作成一个简单的普通 continuation。 | 118/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 | - s | PUSHSLICE 的示例。x{} 是一个空切片。x{...} 是一个十六进制字面量。b{...} 是一个二进制字面量。关于切片字面量的更多信息在这里。 注意,汇编程序可以在某些情况下(例如,如果当前continuation中没有足够的空间)将 PUSHSLICE 替换为 PUSHREFSLICE 。 | ||
<b x{AB12} s, b> PUSHREF <b x{AB12} s, b> PUSHREFSLICE | - c/s | PUSHREF 和 PUSHREFSLICE 的示例。关于在 fift 中构建cell的更多信息在这里。 | ||
8F_rxxcccc | [builder] PUSHCONT [builder] CONT | - c | 从 builder 中推送continuation。细节: 推送由 cc.code 的前 0 <= r <= 3 个引用和前 0 <= xx <= 127 字节制成的简单普通continuation cccc 。 | 26 |
9xccc | [builder] PUSHCONT [builder] CONT | - c | 从 builder 中推送continuation。细节: 推送一个 x 字节的continuation,对于 0 <= x <= 15 。 | 18 |
<{ code }> PUSHCONT <{ code }> CONT CONT:<{ code }> | - c | 用代码 code 推送continuation。注意,汇编程序可以在某些情况下(例如,如果当前continuation中没有足够的空间)将 PUSHCONT 替换为 PUSHREFCONT 。 |