oak-jasm 0.0.0

JASM assembly language parser with support for modern assembly syntax and features.
Documentation

JASM 格式

JASM (Java ASseMbler) 是一种人类可读的 JVM 字节码汇编语言格式,用于表示 Java 类文件的结构和字节码指令。

概述

JASM 格式提供了一种直观的方式来编写和阅读 JVM 字节码,它是 Java 类文件的文本表示形式。该格式支持:

  • 类定义: 类名、访问修饰符、超类、接口
  • 字段定义: 字段名、类型、访问修饰符
  • 方法定义: 方法名、签名、字节码指令
  • 常量池: 自动管理字符串、数字、类引用等常量
  • 属性: 源文件、行号表、局部变量表等标准属性

语法结构

基本类结构

字段定义

方法定义

指令系统

常量加载指令

  • aconst_null - 加载 null 引用
  • iconst_0iconst_5 - 加载整数常量 0-5
  • ldc "string" - 加载字符串常量
  • ldc 123 - 加载数字常量

局部变量操作

  • iload_0iload_3 - 加载局部变量到操作数栈
  • istore_0istore_3 - 从操作数栈存储到局部变量
  • iinc 1 1 - 递增局部变量

栈操作指令

  • pop - 弹出栈顶元素
  • dup - 复制栈顶元素
  • swap - 交换栈顶两个元素

算术运算

  • iadd - 整数加法
  • isub - 整数减法
  • imul - 整数乘法
  • idiv - 整数除法

方法调用

控制流

示例程序

Hello World

简单计算器

高级特性

异常处理

泛型支持

JASM 支持 Java 泛型的类型描述符:

注解支持

转换过程

JASM 格式通过以下步骤转换为 JVM 类文件:

  1. 词法分析: 将文本分解为标记(tokens)
  2. 语法分析: 构建抽象语法树(AST)
  3. 语义分析: 验证语法和类型正确性
  4. 代码生成: 生成 JVM 字节码和常量池
  5. 类文件写入: 写入标准 Java 类文件格式

相关模块

  • lexer - JASM 词法分析器
  • parser - JASM 语法分析器
  • ast - JASM 抽象语法树定义
  • converter - AST 到 JVM 程序的转换器
  • writer - JVM 程序到类文件的写入器

错误处理

JASM 解析和转换过程中可能遇到的错误:

  • 语法错误: 无效的语法结构
  • 类型错误: 类型不匹配或无效类型
  • 引用错误: 未定义的类、方法或字段
  • 验证错误: 字节码验证失败

所有错误都通过 GaiaError 类型返回,提供详细的错误信息和位置。