中文编程
首发于中文编程

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

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

大致设计草图

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

当前进度

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

源码结构

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

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

  • 考虑使用Antlr4, 用类似antlr/grammars-v4的语法文件辅助生成分析器, 省去手动编写分析器
  • 最好有汇编和x64指令背景的开发者
发布于 2018-01-04

文章被以下专栏收录

    在所有编程语言和领域中尝试编写中文代码,开发相关工具,总结经验,一致代码风格。包括中文命名,汉化现有语言,创造中文语法的编程语言等等。作为最熟悉的母语,用来编写代码会让代码更容易被自己和母语相同的其他开发者理解。基于英文的编程语言和框架中,使用中文命名有时有技术问题。希望这里为后人趟雷,填坑。多数现有API是英文的,这里也会对其中一些常用的进行汉化。当然,这里也会对基于中文的编程语言进行探讨。包括汉化基于英文的编程语言,以及创造新的编程语言。