TVM 指令
警告
因 Docusaurus 的限制,单页版本已移至此处。
...
简介
本文档提供了一份TVM指令以及它们的操作码和助记符列表。
信息
TON 虚拟机 (TVM) 的概念文档 TVM.pdf(可能包含过时信息)。
Fift 是一种基于栈的编程语言,旨在管理 TON 智能合约。Fift 汇编器是一个能够将 TVM 指令的助记符转换为它们的二进制表示形式的 Fift 库。
关于 Fift 的描述,包括介绍 Fift 汇编器,可在此处找到。
本文档为每个指令指定了对应的助记符。
请注意以下几点:
- Fift 是一种基于栈的语言,因此任何指令的所有参数都写在它之前(例如,
5 PUSHINT
,s0 s4 XCHG
)。 - 栈寄存器由
s0, s1, ..., s15
表示。其他栈寄存器(最多255个)由i s()
表示(例如,100 s()
)。 - 控制寄存器由
c0, c1, ..., c15
表示。
Gas 价格
本文档中指定了每个指令的 gas 价格。一个指令的基本 gas 价格是 10 + b
,其中 b
是指令长度(以位为单位)。某些操作有附加费用:
- 解析cell:将一个cell转换成一个片段的成本是 100 gas 单位,如果是在同一交易中首次加载该cell,则为 25。对于此类指令,会指定两个 gas 价格(例如,
CTOS
:118/43
)。 - cell创建:500 gas 单位。
- 抛出异常:50 gas 单位。在本文档中,仅对其主要用途为抛出异常的指令指定异常费(例如,
THROWIF
,FITS
)。如果指令在某些情况下只抛出异常,则会指定两个 gas 价格(例如,FITS
:26/76
)。 - 元组创建:每个元组元素 1 gas 单位。
- 隐式跳转:对于一个隐式跳转,10 gas 单位;对于隐式后跳,5 gas 单位。这项费用不属于任何指令的一部分。
- 在continuations之间移动栈元素:每个元素 1 gas 单位,但是移动前32个元素是免费的。
快速搜索
信息
一份完整的机器可读的 TVM 指令列表可在此处获取。
TVM 指令的每个章节都包括一个内置的搜索组件,用于查找特定于该部分的操作码。
然而,在本页面上,搜索涵盖了所有现有的操作码,提供跨整个操作码范围的综合搜索选项。
随意使用下面的搜索框查找特定指令:
Opcode | Fift syntax | Stack | Gas | Description |
---|---|---|---|---|
Please enter a search query | ||||
No results found |
TVM 指令内容列表
...