2018-01-03 烂尾工程: 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-03 烂尾工程: Java实现的汇编语言编译器的更多相关文章
- iOS网络缓存的系统实现是一个烂尾工程
烂尾的原因是request的一致性比较接口没有开放出来.
- 20172319 2018.03.27-04.05 《Java程序设计》第4周学习总结
20172319 2018.03.27-04.05 <Java程序设计>第4周学习总结 教材学习内容总结 第四章 编写类 类与对象的回顾:对象是有状态的,状态由对象的属性值确定.属性由类中 ...
- 如何保证App外包的最终质量,不延期不烂尾?
选择App外包服务的客户,最害怕的就是App项目延期甚至烂尾.投入了巨大的时间和财富,结果最后App无法上线. 解决这个问题有两个方法:第一,在选择公司前,先了解清楚有关App外包的一切问题,做到心里 ...
- 到底为什么你的APP项目烂尾了?
你正在经历迷茫.纠结,或者愤怒.痛苦的情绪,因为,你的APP项目已经或将要烂尾了. 目前的状况只有3种: 项目一直拖到现在,并且很可能继续拖下去 项目在开发期间不断上涨成本 项目完成,BUG多多,不能 ...
- IntelliJ IDEA 工程Java文件上红色的无效符
IntelliJ IDEA 工程Java文件上红色的无效符(红色表示该类是不可编译文件) 1.查看Java.resources文件夹 如图所示,是因为没有配置 2.在Java文件夹点击右键找到Mark ...
- Tensorflow学习笔记2019.01.03
tensorflow学习笔记: 3.2 Tensorflow中定义数据流图 张量知识矩阵的一个超集. 超集:如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S ...
- IDEA(2018.01)安装和破解
IDEA(2018.01)安装和破解 1.下载IDE https://www.jetbrains.com/idea/download/#section=windows 选择Ultimate版本 2.下 ...
- C#的ComboBox学习使用2018.08.03
ComboBox是一个有下拉列表的文本显示框,其text为当前的文本,item属性为项 comboBox1.Items.Add("); id = comboBox1.Text; 可以采用se ...
- C#登陆界面学习编写 2018.08.03
简单的登陆界面的编写,在编写如下界面时,设置错误次数上限需要用到静态变量 public static int count;//计算错误次数(为静态变量) 可以防止点击登陆后次数被清空,在登陆后打开新的 ...
随机推荐
- Flask 中的路由系统
基本用法 Django的路由系统url集中在一起,而Flask的路由系统以装饰器的形式装饰在视图上如: @app.route("/",methods=["GET" ...
- Matlab实现《追光者》简谱
MATLAB除了生孩子,其他全都能做系列. 使用MATLAB进行播放<追光者>,纯文本内容哦. Fs = ; load y; sound(y, Fs); 加载的y是哪里来的呢?当然是调用函 ...
- maya2014卸载/安装失败/如何彻底卸载清除干净maya2014注册表和文件的方法
maya2014提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装maya2014失败提示maya2014安装未完成,某些产品无法安装,也有时候想重新安装maya ...
- centoos内核升级
1.检查当前CentOS内核版本 uname -r 2.导入key 打开http://elrepo.org/tiki/tiki-index.php 复制执行该命令 3.安装ELRepo 打开2步中的网 ...
- 14:IO之字符字节流
字节流: InputStream OutputStream 字节流: FileInputStream FileOutputStream BufferedInputStream Buffer ...
- Java学习之Servlet篇
<JAVA遇见HTML——Servlet篇> Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁. init():在Servlet的生命 ...
- 金三银四季来了!Java 面试题大放送,能答对70%就去BATJTMD试试~
摘要: 2019,相对往年我们会发现今年猎头电话少了,大部分企业年终奖缩水,加薪幅度也不如往年,选择好offer就要趁早,现在开始准备吧,刷一波Java面试题,能回答70%就去BATJTMD大胆试试~ ...
- hdu 6161--Big binary tree(思维--压缩空间)
题目链接 Problem Description You are given a complete binary tree with n nodes. The root node is numbere ...
- Asp.net core 跨域设置
验证环境: dotnet core 2.1/Asp.net core2.1 一.作用域在中间件层 配置的方式是在startup.cs文件Configure(IApplicationBuilder a ...
- Shell脚本中实现自动补全功能
对于Linuxer来说,自动补全是再熟悉不过的一个功能了.当你在命令行敲下部分的命令时,肯定会本能地按下Tab键补全完整的命令,当然除了命令补全之外,还有文件名补全. Bash-completion ...