【原创】【自制编程语言】0.前言
前言
很多问题,看似很难,但是只要一点一点开始做起来,往里面添加功能,刚开始似乎是一个微不足道,甚至不能称之为“编程语言”的东西,但到了最后,你就会发现,你做出来的东西就越来越像一个真正的编程语言了。
(预计30天)
本文做出的东西,是一个模仿汇编语言的东西,汇编语言是一个很难懂的语言,除了编写操作系统或者类似的东西,几乎不会用到,但是,这种语言的编译器实现也是最简单的,非常易实现,因为语句也就这么几种。
说到汇编语言,它是长这样的一个东西,先看C++代码:
for(int i=1;i<=100;i++){
sum+=i;
}
对应的汇编语言代码是:
mov eax,1 ;i=1;
L1:
cmp eax,100
ja L2 ;if(j>100)goto L2;
add [sum],eax ;sum+=i;
jmp L1 ;goto L1;
L2:
... ;;执行后面的代码
可想而知,这样的编程语言是多么复杂,用来写大型程序是让人崩溃的,因此它一般会在一些底层场合使用,因为这是接近硬件的语言。
当然,说道底,我们自制出来的东西,功能方面肯定也不如这个汇编语言能多接近硬件或者是解决硬件问题,选择这个为样板仅仅是为了写起来方便,仅此而已。
本文不是讲专业的,因此也没有用专业的一些库和工具(如yacc/lex),只是随手写写,如果要写出更加专业的东西还是要借助专业工具。(就像要写个游戏不可能只用windows.h硬写,必须依赖一些专业的库。)我这里写也是凭着个人的兴趣做,专业人员肯定嫌太简单。
那为什么要写这个系列呢?我之前当然尝试过不少次,但是最终都是放弃了。(相信我,这次我尝试多写点,毕竟实现仿汇编真的简单)提高写代码的能力?闲得无聊?或者实现自己的一个目标?其实...我也不知道。
这个系列持续更新,更新频率不定,基本不会咕了(已经提前写了两三篇,到时候如果后续还没写出来,这几篇提前写的可以先放出来,代码已经写了一小部分了)