整了个简单的虚拟机,用来学习程序语言原理

2014-11-26 10:35:30 +08:00
 ibudao
最近对程序语言原理感兴趣,读了些资料,整了个简单的基于寄存器的虚拟机,用来实践。虚拟机是16位的,只能运行简易版的汇编程序。为了更有趣,我用js实现的,这样就可以在web上跑~
demo: http://lujb.github.io/starterVM#Demo
code: https://github.com/lujb/starterVM

当然,我会一直完善(下一步计划实现一个小型的c)。通过动手实现,我发现这个过程对程序语言原理的理解大有裨益。所以我希望有类似兴趣的同学一起来探讨,大家共同升技能。
6060 次点击
所在节点    分享创造
33 条回复
ibudao
2014-11-26 14:47:47 +08:00
@ffffwh 程序语言原理是我的最终目的,这个东西仅仅是第一步,如果不了解计算机**原理,谈何实现一个高级语言虚拟机呢。对我来说,直接啃那些程序语言原理的书效果太差,所以才打算边coding边学习。如果兄台有好的方式,还请不吝赐教。
hansnow
2014-11-26 15:08:23 +08:00
@ibudao 真的很感兴趣!
jeansfish
2014-11-26 15:49:17 +08:00
有本书《自己动手写操作系统》
bcxx
2014-11-26 16:42:25 +08:00
@ibudao pcode 很简单的啊……
liuzhedash
2014-11-26 18:22:56 +08:00
http://bellard.org/jslinux/
这个也可以看一下
leiliang
2014-11-26 18:28:14 +08:00
没人想过把这个做成一个游戏吗?@ibudao
deben
2014-11-27 08:58:37 +08:00
@ibudao 非常赞同你这个思路
把51放进FPGA的时候,才真正算是明白单片机里面是怎么跑的
再多的理论,也不如自己操作一次
ibudao
2014-11-27 09:55:58 +08:00
@leiliang 想有想法啊,不过感觉不太好弄
jedihy
2014-11-29 09:44:22 +08:00
这个是哪种汇编呀,怎么跟我常用的不一样?
husinhu
2014-11-29 17:20:45 +08:00
+1 for mentioning fabrice bellard.
js实现,考不考虑浮点数,还是只支持整型运算,会不会模拟浮点寄存器
ibudao
2014-12-01 09:17:32 +08:00
@jedihy 指令集不一样,所以汇编也不一样。这是个简易版本
ibudao
2014-12-01 09:19:35 +08:00
@husinhu 只支持整型,浮点的话看后期有没必要了
yymdude
2015-03-27 05:57:18 +08:00
@ibudao 设计编程语言,必须懂指令集么?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/149341

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX