烂尾工程: Java实现的汇编语言编译器

简介: 一个半拉子工程, 用Java实现的汇编语言编译器的介绍. 代码中使用中文命名. An unfinished project, an assembler implemented in Java, with naming in Chinese.

在半年前的《中文编程的尝试历程小记》中简单介绍了这一项目. 由于短期内估计不会继续进行, 而且这个项目好像是至今个人在中文命名实践中的代码量最大的一个项目, 谨在此作一小结. 最新的源码库在program-in-chinese/assembler-in-chinese-experiment.

大致设计草图

2018_01_03_assembler_

以'mov rax 0x1122334455667788'指令示例如下:
2018_01_03_assembler_

当前进度

  • 仅支持两个操作数的部分指令, 第二个操作数仅支持立即数
  • 第一个操作数可以是寄存器,或者简单的内存寻址,如[0]
  • 支持强制类型,如add ax,strict word 5
  • 生成空可执行文件(PE), 尚未填入生成的二进制码

源码结构

下面是所有文件, 希望是一目了然? "分析器类"从单行汇编指令字符串分析生成"代码行类", "汇编器类"从"代码行类"生成二进制码. 其他主要是业务数据描述("模型"包)和功用(utils).
2018_01_03_assembler_

假如要重新继续这一项目, 下面是一些想法:

  • 考虑使用Antlr4, 用类似antlr/grammars-v4的语法文件辅助生成分析器, 省去手动编写分析器
  • 最好有汇编和x64指令背景的开发者
    2018-01-03
相关文章
|
3月前
|
Java 编译器
Java 编译器(javac)
Java 编译器(javac)
35 1
|
28天前
|
Java Maven
Maven【2】( Web 工程依赖 Java 工程)(命令行操作)
Maven【2】( Web 工程依赖 Java 工程)(命令行操作)
20 0
|
2月前
|
Java Docker 容器
百度搜索:蓝易云【Docker使用之java项目工程的部署】
通过以上步骤,你已经成功在Docker中部署了Java项目工程。这样可以确保你的应用在不同环境中具有一致的运行结果,并且方便地进行部署和管理。
36 7
|
4月前
|
Java API Spring
spring的安装 -- IEDA-创建 Java 工程的jar包教程--以及spring5的核心组件
spring的安装 -- IEDA-创建 Java 工程的jar包教程--以及spring5的核心组件
52 0
spring的安装 -- IEDA-创建 Java 工程的jar包教程--以及spring5的核心组件
|
4月前
|
Java Maven Android开发
Maven - 快速创建Java工程和Web工程
Maven - 快速创建Java工程和Web工程
50 0
|
6月前
|
Java 关系型数据库 MySQL
JSP景观工程管理系统myeclipse开发mysql数据库bs框架java编程jdbc
JSP景观工程管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开,系统主要采用B/S模式开发。
47 1
|
6月前
|
运维
天然气工程运维系统 毕业设计 JAVA+Vue+SpringBoot+MySQL(二)
天然气工程运维系统 毕业设计 JAVA+Vue+SpringBoot+MySQL
|
6月前
|
运维 监控 安全
天然气工程运维系统 毕业设计 JAVA+Vue+SpringBoot+MySQL(一)
天然气工程运维系统 毕业设计 JAVA+Vue+SpringBoot+MySQL
|
6月前
天然气工程业务管理系统 毕业设计 JAVA+Vue+SpringBoot+MySQL(二)
天然气工程业务管理系统 毕业设计 JAVA+Vue+SpringBoot+MySQL
|
6月前
|
监控 Java BI
天然气工程业务管理系统 毕业设计 JAVA+Vue+SpringBoot+MySQL(一)
天然气工程业务管理系统 毕业设计 JAVA+Vue+SpringBoot+MySQL