用自制编程语言写自制操作系统(一)

我打算写一系列文章,来讲我是怎么一步步实现如何用自制的编程语言写自制操作系统的,但是我只是对我的实现方法做一个大致的概括,对于其中所涉及到的编译原理或操作系统知识,推荐看专门的教程

我的整个技术架构基本上就是用自制语言写的操作系统代码转译到nasm,然后用nasm编译器编译成二进制可执行文件,然后用虚拟机装载这个操作系统,实现操作系统的启动,因此我建议分两部分独立去完成,先用汇编写操作系统,然后再用自制编程语言转译成汇编,然后二者结合,就是用自制编程语言写自制操作系统了

我看过的自制操作系统的书应该只有一本,那就是《30天自制操作系统》,剩下其他的知识都是百度的,当然大学里也学了操作系统和编译原理的,我比较推荐《30天》这本书,因为它讲的很简单,但是我不建议用它的工具链,因为这本书成书太早了,里面的工具链现在的系统不兼容,我当时走的弯路是先仿照《30天》,用c语言写,然后发现工具链、环境设置很难搞,勉强运行之后,越往后做越依赖《30天》自带的相关工具,然后当时都用win10了,理所当然的不兼容,然后只用c语言写,代码也会逐渐变得臃肿不堪,后面尝试转到c++,发现环境配置更难搞了,完全没办法做下去了,然后就搞不下去了,从实模式转到保护模式,初始化GDT,PDT,IDT什么的,每一步都是一个坑,出了问题你很难知道这到底是虚拟机硬件的问题,还是c语言里bug的问题,后来用汇编从头开始搞,这时候想从汇编做肯定bug少很多,事实也的确如此,而且代码也没有比c语言多多少,除了编程方式有了很大的差别,其他还好

再讲讲自制编程语言,编程语言的话我没有特别推荐的,把编译原理学好就行了,我最开始用的是递归下降式文法,这里以过来人的身份告诉你,千万不要用这种文法,虽然这种文法比较简单,但是它太受限了,你根本无法设计出来令你满意的编程语言语法,当时设计到一半我就放弃了,自制编程语言一定要用递归向上式文法,虽然难的不行,但是它足够能让你随意设计任何语法,LR1文法足够用了。然后再说说编译器,我没有做编译器,我做的只是将自制编程语言转译到了nasm汇编,学过编译原理的应该清楚编译有前端和后端的区分,这里我只实现了前端部分,可以把nasm看作中间代码,然后再用nasm的汇编器编译成二进制文件,可以说我的自制编程语言其实就是nasm的方言

其实,自制编程语言和自制操作系统一开始我是分开进行的,等二者趋于成熟后我再合并到一起的,因此基本上就是我用自制编程语言写操作系统时,发现语言不够用了,然后我转而会拓展语言语法,拓展成功后用这个语法继续写操作系统,我应该是从大三开始做自制编程语言和自制操作系统,到现在依旧在很初始的阶段,我会在后续文章里讲讲这些坑,这样大家就不用继续趟坑啦!

最后,介绍一下技术栈,如果你要用自制编程语言写自制操作系统,那么你应该会编译原理,至少是前端部分,实际上大多数学校教的编译原理也仅限于前端部分,然后是flex,bison,这两个是自制编程语言的工具,然后是正则表达式,C语言,c++,正则表达式是flex需要使用的,c语言flex,bison都要求,c++的话因为我们要自制AST的,建个树,转字符串什么的,还是用C++比较方便,然后是汇编语言nasm,你写操作系统要用的,需要很熟悉很熟悉,然后是操作系统原理,然后是makefile,组织这么大的工程必须要用一个管理工具,最后是Qemu操作指令,掌握虚拟机操作指令你可以很方便的调试操作系统,最后如果你学有余力,非常建议你上git,有一个版本管理工具真的很方便。

本期文章就讲到这里,希望有兴趣的小伙伴可以继续追更,感谢大家的关注!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值