Skip to content

tact-lang/ton-opcode

Repository files navigation

TON Opcodes

A decompiler for The Open Network Virtual Machine (TVM) bytecode to Fift assembly.

Installation

yarn add @tact-lang/opcode

Usage

For most cases you will want to disassemble a BoC file generated by the Tact/FunC/Tolk compiler. In this case decompiler will unpack the dictionary to procedures and methods.

import {AssemblyWriter, disassembleRoot} from "@tact-lang/opcode"

// Disassemble a source file into a program AST
const program = disassembleRoot(source, {
    computeRefs: false,
})

// Write the program AST into a Fift assembly string
const res = AssemblyWriter.write(program, {})
console.log(res)

If you want to decompile BoC file without unpacking of the dictionary, you can do the following:

import {AssemblyWriter, disassembleRawRoot} from "@tact-lang/opcode"

const program = disassembleRawRoot(source)

const res = AssemblyWriter.write(program, {})
console.log(res)

If you want to disassemble a single Cell into an array of opcodes, you can do the following:

import {disassemble} from "@tact-lang/opcode"

const opcodes = disassemble({source: cell})

Thanks to

License

MIT