调试与代码页原语
以 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 |