IcebergThings / VM-76

大概是一个沙盒游戏
GNU Affero General Public License v3.0
2 stars 2 forks source link

是否要设计一个基于ASM76的高级语言,或者说底层实现? #14

Open bobcao3 opened 7 years ago

bobcao3 commented 7 years ago

e.g. 实现一个pascal支持(gcc太复杂了玩不起

satgo1546 commented 7 years ago

你去看看Free Pascal用户手册有多少页,你就知道Pascal一样玩不起了。

satgo1546 commented 7 years ago

这ASM76又没挑调试工具,指令集又不那么好用(别人一个MOV在这里被拆成了十几种指令),架构又鬼畜……写ASM76已经可以写到吐了,不弄个高级语言看样子是不行了。

bobcao3 commented 7 years ago

写个RGSS脚本编辑器等级的高级语言吧

(其实别人的mov也是拆开的,只是拆分的工作交给assembler了

bobcao3 commented 7 years ago

你会发现mov $eax, $ebx和mov [0x100c], $eax编译出来是两条不同的指令

satgo1546 commented 7 years ago

Ruby好像更玩不起……

别人的MOV确实是分开的,但是它们都叫MOV啊。这里不仅叫MOV,还叫DAT、MVP……

我觉得我们只能再造一个autocode级别的语言了

bobcao3 commented 7 years ago

搞个nasm如何(

satgo1546 commented 7 years ago

高级汇编语言没必要了,因为已经有个ASM76官配汇编器了233 至少得是结构化的,要不然好意思叫高级语言吗…… 想来想去还是觉得类似C那种级别的“高级汇编”比较靠谱。 (C++76?不可能。我觉得CMM76就可以了——C Minus Minus 76之类的。 语法弄得越简单越好,比如说前缀表达式什么的都可以,要不然parser不会写就很滑稽了。

bobcao3 commented 7 years ago

建议参考语言 FORTRAN 77

https://en.wikibooks.org/wiki/Fortran/Fortran_examples

satgo1546 commented 7 years ago

这examples看了两天,感觉太复杂(啥都复杂还是ASM最好了

bobcao3 commented 7 years ago

不不不我们不去实现FORTRAN 90+的特性 FORTRAN 77的就很适合这个项目,毕竟是最接近汇编的编程语言了

satgo1546 commented 7 years ago

其实只是我看得有点晕,不过反正自己造个语言,造成什么样都无所谓了,说参考Fortran 77什么的也只是吸收一下这种精神就好了……

bobcao3 commented 7 years ago

我觉得Fortran 77 这样的语言写操作系统至少不会像C++一样到处蛋疼

bobcao3 commented 6 years ago

嗯我毕业了有空把这项目捡起来继续玩了…… 要不把这个虚拟机独立出去?我觉得比较切实际的是为它写一个Lisp编译器。Lisp的语法相当固定,而且也方便解析(1958年的语言…… 比FORTRAN还清晰,所以能被用到现在吧……)

satgo1546 commented 6 years ago

惊了,捡坑还行 Lisp语法是很好看(嗯,好看),就是方言太多了(于是不在乎多加一个VM76Lisp dialect 233 其实选啥语言实现没有那么大关系啦(?),就算自己造一种语言也可以的,目前这个VM的当务之急不是ASM76的语法根本就太丑了吗23333 所以才会想要做个高级语言的嘛。

bobcao3 commented 6 years ago

而且ASM76汇编器的bug有点严重……在扫描tags的时候它会把所有行都算进instruct的大小,然后如果代码里有非代码的内容tag就会错位,刚刚修了。我觉得要不把tag的机制改成一次性直接编译,在编译时检查到tag就留0x0000并把这个tag引用加入替换表。在整个程序编译完再根据替换表把tag放回去

bobcao3 commented 6 years ago

顺便在ASM76 repo里已经完成了VMc和VMexec,成功地完成了一个Hello World,嗯……

我在想,我们是准备硬核一点,用ASM76写这个LISP编译器还是用C写……有点想用ASM76写

satgo1546 commented 6 years ago

用ASM76 emmmmm... 我觉得可以