调试与代码页原语
以 FE 开头的操作码保留给调试原语使用。这些原语具有已知的固定操作长度,并且作为(多字节)NOP 操作行为。
然而,当在启用调试模式的 TVM 实例中调用时,这些原语可以产生特定输出到 TVM 实例的文本调试日志中,不影响 TVM 状态。
DEBUG 和 DEBUGSTR 是两个调试原语,它们涵盖了所有以 FE 开头的操作码。当调试启用时,这里列出的其他原语具有其指定的效果。当调试禁用时,它们表现为 NOP。
| 操作码 | Fift 语法 | 堆栈 | Gas | 描述 | 
|---|---|---|---|---|
| Please enter a search query | ||||
| No results found | ||||
调试原语
| xxxxxxx 操作码 | xxxxxxxxxxxxxxxxxxxxxxxxxxxx Fift 语法 | xxxxxxxxxxxxxxxxx 堆栈 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 描述 | xxxx Gas | 
|---|---|---|---|---|
| FEnn | {nn} DEBUG | - | 0 <= nn < 240 | 26 | 
| FEFnssss | {string} DEBUGSTR{string} {x} DEBUGSTRI | - | 0 <= n < 16。ssss的长度为n+1字节。{string}是一个字符串字面量。DEBUGSTR:ssss是给定的字符串。DEBUGSTRI:ssss是由一个字节的整数0 <= x <= 255加上给定字符串组成。 | 26 | 
| FE00 | DUMPSTK | - | 转储堆栈(最多顶部 255 个值)并显示总堆栈深度。 | 26 | 
| FE2i | s[i] DUMP | - | 转储 s[i]。 | 26 | 
代码页原语
| xxxxxxx 操作码 | xxxxxxxxxxxxxxxxxxxxxxxxxxxx Fift 语法 | xxxxxxxxxxxxxxxxx 堆栈 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 描述 | xxxx Gas | 
|---|---|---|---|---|
| FFnn | [nn] SETCP | - | 选择 TVM 代码页 0 <= nn < 240。如果不支持代码页,则抛出无效的操作码异常。 | 26 | 
| FF00 | SETCP0 | - | 选择本文档描述的 TVM(测试)代码页零。 | 26 | 
| FFFz | [z-16] SETCP | - | 选择 TVM 代码页 z-16,适用于1 <= z <= 15。负代码页-13...-1保留用于验证其他代码页中 TVM 运行所需的限制性 TVM 版本。负代码页-14保留用于实验性代码页,不一定在不同 TVM 实现之间兼容,并且应在 TVM 的生产版本中禁用。 | 26 | 
| FFF0 | SETCPX | c -  | 选择通过栈顶传入的代码页 c,-2^15 <= c < 2^15。 | 26 |