一个编译器写作之旅
再次失败.
这次只做到第五步就进行不了咯,
1,这个编译器不是生成机器码, 而是汇编, 我在win上msys2里, 此编译器实现了AT&T语法和Intel语法, AT&T语法生成的汇编无法用汇编器编译,as nasm都试过了不行, 换成Intel语法版本的,用nasm可以编译了, 但是运行的时候出现段错误. 这就超出我的知识范围了, 我无法处理.
2,在C|C++里, 若是要使用Unicode,需要改动很多东西, 比如类型,处理相应类型的标准库函数, 光是这里面的几十种搭配, 你要是没经验不懂, 基本完全做不了事.
这次我尽力了, C系列C语族果然是天坑.
不过这个编译器的前面部分, 仅仅只运行解释器倒是没什么问题, 一旦走到跟机器绑定的汇编, 加上老旧的汇编器, 基本百分百一脚一个坑, 想要实现从机器码到汇编这一步的分解方案, 基本这几十年都会很难咯, 一是没人关注,二是有兴趣的基本上又不懂, 完全就是知识隔绝区, 底层实现中文汉字编程, 没有一个人能解决!
路转峰回地说, 用C写解释器倒是没什么问题, 甚至全中文汉字编写, 加上Unicode utf8的支持也没问题. 或许这就是降维打击吧, 解释器的性能永远无法超过编译器. JIT那也是涉及到了汇编的, 一旦涉及汇编, 又回到了上面说的问题.
当然也可以在解释器解析完了后那里直接内嵌机器码, 不知道有没有人这样做过. 可能太难了吧.
冷孤独2020/用C汉字编程 - Gitee.com