LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2351|回复: 11

献丑:我写的MIX的模拟程序

[复制链接]
发表于 2006-8-10 12:14:13 | 显示全部楼层 |阅读模式
闲暇之余写了个MIX模拟程序,写得不好,还希望高手们多多指教。

此程序基本实现了高德纳先生在《计算机程序设计艺术》一书中所设计的古老MIX机器的模拟工作。希望通过写这个程序学习一下C++,但现在来看总觉得代码写得很丑,文白交杂。所幸论坛上高手如云,望经验丰富的你们能给予指点一二。不胜感激。

特性:
1、实现MIX除磁带、磁盘IO,和浮点运算外的所有指令;
2、具有简单的调试功能;
3、MIX汇编器可以输出汇编和机器代码对照的“列表文件”。

=====
另,因我不懂automake,所以只有一个简单的Makefile文件,在源代码目录make all即可。
源码包中所附的mix和mixal是64bit Linux下的可执行文件。primes.mix是用MIX汇编语言写的计算前500个素数的程序。命令行下输入./mix primes.mix即可看到结果。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2006-8-10 16:47:06 | 显示全部楼层
呵呵支持~~~~~~~~~~~
回复 支持 反对

使用道具 举报

发表于 2006-8-10 22:23:41 | 显示全部楼层
good ,study
回复 支持 反对

使用道具 举报

发表于 2006-8-13 15:17:41 | 显示全部楼层
makefile编写的有问题,不要提供可执行的程序.你的程序在我的机子上不能运行,要从新编译.但是makefile 有问题,把MAKEFILE的第一行去掉.就解决了.
回复 支持 反对

使用道具 举报

发表于 2006-8-13 18:09:27 | 显示全部楼层

鼓励

能够做出东东的同志就是好同志!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-13 22:05:52 | 显示全部楼层
Post by ywchen2000
makefile编写的有问题,不要提供可执行的程序.你的程序在我的机子上不能运行,要从新编译.但是makefile 有问题,把MAKEFILE的第一行去掉.就解决了.


谢谢你的意见,已经按照你的意见修改了附件了。
回复 支持 反对

使用道具 举报

发表于 2006-8-14 14:34:21 | 显示全部楼层
嗯, mmix 是 risc, 会不会好实现一点?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-16 15:14:32 | 显示全部楼层
mmix由高德纳先生自己实现了一个基于32位平台的模拟器。在Gentoo系统中直接emerge mmix即可。采用的是CWEB实现的。我写mix汇编器就是在学习他的mmix汇编器基础上完成的。比如“符号表”就是采用同样的数据结构。另外他的mmix实现有丰富详尽的文档,非常好阅读。

遗憾的是实现mmix时市面上还是32位CPU占主流,所以他的实现需要用32位运算模拟64位运算,我以为这会使性能大打折扣。当然性能对于他的目的并不重要。私下曾想在x86_64上再实现一个,期望模拟器性能上升一个数量级。我非常喜欢MMIX,尤其对于他的寄存器堆栈心神往之。因此恨AMD公司为了商业利益,把丑陋得像狗屎的x86延续到了64位。

我也曾有过幼稚而疯狂的想法——研究lcc的实现,在mmix虚拟机上实现一个C编译器,然后移植一个简单的操作系统内核到上面;而且还想过在FPGA上实现一个mmix出来。然,虽百般不愿还是得面对一厢情愿的现实。

不好意思,说道我喜欢的mmix,情不自禁啰嗦了几句。
回复 支持 反对

使用道具 举报

发表于 2006-8-16 18:47:25 | 显示全部楼层
你的想法停好的,支持你去实现
回复 支持 反对

使用道具 举报

发表于 2006-8-16 18:52:06 | 显示全部楼层
你安装过lcc的LINUX版本吗???
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表