mylang_bytecode/
lib.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//! バイトコードの定義

use serde::{Deserialize, Serialize};

/// 命令
#[derive(Debug, Serialize, Deserialize)]
pub enum Inst {
    I32Const(i32),
    I32Add,
    StrConst(String),
    PrintI32,
    PrintStr,

    /// PC + 1 をスタックに push したうえで、指定された番地にジャンプする
    Call(usize),

    /// スタックトから pop した番地にジャンプする
    Return,
}