车了个脑残的汇编虚拟机:脑残星球

2012-03-06 11:29:28 +08:00
 aligo
最近有点瓶颈,甚至有点儿脑残的感觉,所以花了数个小时做一点好玩的事情,转换一下脑残的状态,叫这个名字是故意的-v-

脑残星球(又称BB星球或2B星球)
主要位于一维空间之中(未来可能拓展出新的维度),脑残星球的一大特点是在高一级维度看来成圆环状首尾相接。
Birus
脑残星球上的主要生命形式,其最大的特点是没有脑子,或者说和其他Birus共享脑子。Birus的遗传信息由BBCode(脑残码)表示。
Broken
活体Birus在其生命活动中可以在空间中分裂出Broken,Broken被视做活体的一部分继续活动。一个活着的Birus至少为一个Broken。(用你们人类的说法是Thread)
Brain
所有Birus都连接至唯一的一个大脑,由大脑负责调度Birus的行动。大脑在多个Birus的多个Broken之间共享。(用你们人类的说法是CPU)
SG
脑残空间中的最基本单位,也是活体Birus的最基本单位。大脑每次会按顺序依次执行每个Broken的一个个SG。
Birus的邪恶目标
停止空间中其他Birus的活动,或者覆盖空间中的所有SG。

前几天看了 @chone 同学写的那个有意思的东西。于是自己也想试试,不过javascript对于随机生成来说命中率太低了。所以用比较符合机器识别,语法简单的汇编语言会更合适一点。
基本目标就是写一个可以运行某种汇编语言的虚拟机,然后让随机生成的代码在里面运行,然后在此基础上进行优胜劣汰和算法变异。
于是就先造了这个CoreWar的RedCode相似的汇编语言,目前为止已经完成的部分是和RedCode一样的。不过为了方便,未来可能会和RedCode有所区别。
这就是第一部分的东西了。

BBCode
目前可将BBCode视为一种残缺的RedCode方言。每行表示一个SG(在CoreWar中叫做Core):
操作码(.操作模式)? (A模式)?A值/地址 (B模式)?B值/地址

目前只有一个很简陋的虚拟机demo,不断更新中:
http://labs.aligo.me/bb/

陆续可能会有更多调整,目前限制了脑残星球只有32个SG,虽然可以更改这个限制,不过还是建议不要试着用这东西写操作系统,除非你想体验一夜回到解放前的感觉XD
欢迎各种建议意见-v-
4195 次点击
所在节点    随想
7 条回复
GordianZ
2012-03-06 12:26:25 +08:00
页面载入的时候自动reset一下吧,之前点了半天step 20没反应……
一直对corewar挺有兴趣的,还没仔细研究过。明天仔细研究,现在睡觉。
aligo
2012-03-06 18:25:18 +08:00
@GordianZ 恩。今天都在忙别的东西。先小改了一下界面
功能上基本没变,不过可以创建任意大小的空间和任意数量的Birus了
aligo
2012-03-07 09:28:59 +08:00
昨天晚上加上了SPL操作,工作方式类似于GNU Pth,共享同样的空间,每个Broken依次单步执行
晚点有空我再慢慢把减乘除余和逻辑跳转加上=v=
kojp
2012-03-07 13:01:51 +08:00
LZ好先进,呃,如果不点开链接,我完全不知道你在说的是什么。
kojp
2012-03-07 13:03:29 +08:00
PS:

BLOG 好漂亮,果断收藏了!
cutehalo
2012-03-07 13:04:15 +08:00
好厉害啊。。。可是已经把汇编忘光光了。。。
aligo
2012-04-11 11:14:30 +08:00
早知道一个月前我应该想把这东西完整地做出来

现在看到有了个0x10c,不知道怎么就不想继续做了

啊啊啊= =

每次挖完坑都没有办法坚持做下去,然后突然发现有人在和你做一样的东西了。。。

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

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

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

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

© 2021 V2EX