跳到主要内容

TVM 指令

警告

因 Docusaurus 的限制,单页版本已移至此处

...

简介

本文档提供了一份TVM指令以及它们的操作码和助记符列表。

信息

TON 虚拟机 (TVM) 的概念文档 TVM.pdf(可能包含过时信息)。

Fift 是一种基于栈的编程语言,旨在管理 TON 智能合约。Fift 汇编器是一个能够将 TVM 指令的助记符转换为它们的二进制表示形式的 Fift 库。

关于 Fift 的描述,包括介绍 Fift 汇编器,可在此处找到。

本文档为每个指令指定了对应的助记符。

请注意以下几点:

  1. Fift 是一种基于栈的语言,因此任何指令的所有参数都写在它之前(例如,5 PUSHINTs0 s4 XCHG)。
  2. 栈寄存器由 s0, s1, ..., s15 表示。其他栈寄存器(最多255个)由 i s() 表示(例如,100 s())。
  3. 控制寄存器由 c0, c1, ..., c15 表示。

Gas 价格

本文档中指定了每个指令的 gas 价格。一个指令的基本 gas 价格是 10 + b,其中 b 是指令长度(以位为单位)。某些操作有附加费用:

  1. 解析cell:将一个cell转换成一个片段的成本是 100 gas 单位,如果是在同一交易中首次加载该cell,则为 25。对于此类指令,会指定两个 gas 价格(例如,CTOS: 118/43)。
  2. cell创建500 gas 单位
  3. 抛出异常50 gas 单位。在本文档中,仅对其主要用途为抛出异常的指令指定异常费(例如,THROWIFFITS)。如果指令在某些情况下只抛出异常,则会指定两个 gas 价格(例如,FITS: 26/76)。
  4. 元组创建:每个元组元素 1 gas 单位
  5. 隐式跳转:对于一个隐式跳转,10 gas 单位;对于隐式后跳,5 gas 单位。这项费用不属于任何指令的一部分。
  6. 在continuations之间移动栈元素:每个元素 1 gas 单位,但是移动前32个元素是免费的。

快速搜索

信息

一份完整的机器可读的 TVM 指令列表可在此处获取。

TVM 指令的每个章节都包括一个内置的搜索组件,用于查找特定于该部分的操作码。

然而,在本页面上,搜索涵盖了所有现有的操作码,提供跨整个操作码范围的综合搜索选项。

随意使用下面的搜索框查找特定指令:

OpcodeFift syntaxStackGasDescription
Please enter a search query
No results found

TVM 指令内容列表

...

参阅