asm

Generated by tinox doc

tinox.core.asm, split out of the bundled stdlib as a standalone tinox-central package.

Assemble bytecode

import tinox.core.asm

class Main
{
    fnc main() -> Int32
    {
        const asm: Assembler = Assembler::new()

        // push 1, push 2, add, halt
        Assembler::emit(asm, Ops::Push())
        Assembler::emitInt(asm, 1)
        Assembler::emit(asm, Ops::Push())
        Assembler::emitInt(asm, 2)
        Assembler::emit(asm, Ops::Add())
        Assembler::emit(asm, Ops::Halt())

        const bytecode: List<Int64> = Assembler::resolveLabels(asm)
        println("bytecode length: " + bytecode.len().toString())
        return 0
    }
}

fn tinoxBytesToString(bytes: List<Int64>) → String

class Assembler

Fields

bytecodeList<Int64>
labelsMap<String, Int64>

Methods

fn new() → Assembler
fn emit(asm: Assembler, op: Int64) → Nothing
fn emitInt(asm: Assembler, value: Int64) → Nothing
fn emitLabel(asm: Assembler, name: String) → Nothing
fn resolveLabels(asm: Assembler) → List<Int64>
fn toBytes(asm: Assembler) → String

class Ops

Methods

fn Nop() → Int64
fn Halt() → Int64
fn Load() → Int64
fn Store() → Int64
fn Push() → Int64
fn Pop() → Int64
fn Add() → Int64
fn Sub() → Int64
fn Mul() → Int64
fn Div() → Int64
fn Jmp() → Int64
fn Jz() → Int64
fn Jnz() → Int64
fn Cmp() → Int64
fn Call() → Int64
fn Ret() → Int64