V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aligo
V2EX  ›  随想

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

  •  
  •   aligo · 2012-03-06 11:29:28 +08:00 · 4213 次点击
    这是一个创建于 4671 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近有点瓶颈,甚至有点儿脑残的感觉,所以花了数个小时做一点好玩的事情,转换一下脑残的状态,叫这个名字是故意的-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-
    7 条回复    1970-01-01 08:00:00 +08:00
    GordianZ
        1
    GordianZ  
    MOD
       2012-03-06 12:26:25 +08:00
    页面载入的时候自动reset一下吧,之前点了半天step 20没反应……
    一直对corewar挺有兴趣的,还没仔细研究过。明天仔细研究,现在睡觉。
    aligo
        2
    aligo  
    OP
       2012-03-06 18:25:18 +08:00
    @GordianZ 恩。今天都在忙别的东西。先小改了一下界面
    功能上基本没变,不过可以创建任意大小的空间和任意数量的Birus了
    aligo
        3
    aligo  
    OP
       2012-03-07 09:28:59 +08:00
    昨天晚上加上了SPL操作,工作方式类似于GNU Pth,共享同样的空间,每个Broken依次单步执行
    晚点有空我再慢慢把减乘除余和逻辑跳转加上=v=
    kojp
        4
    kojp  
       2012-03-07 13:01:51 +08:00
    LZ好先进,呃,如果不点开链接,我完全不知道你在说的是什么。
    kojp
        5
    kojp  
       2012-03-07 13:03:29 +08:00
    PS:

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

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

    啊啊啊= =

    每次挖完坑都没有办法坚持做下去,然后突然发现有人在和你做一样的东西了。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3211 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 12:36 · PVG 20:36 · LAX 04:36 · JFK 07:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.