墨莫走向内存大楼二楼的一个房间。从深海脑魔的记忆里知道,这个房间有一个重启这台计算机的地方。
毕竟,外界的情况是复杂的。在一些极端情况下,锁存器中的值会发生反转,也就是原本储存着0,结果变成了1,或者反过来1变成0。
一旦在处理器一些比较重要的寄存器中出现这种情况,那就会死机。
设计者也预料不到会有哪些情况会使这台机器死机,如果出现这种情况,那就需要重启。
在深海脑魔控制这台计算机几个世纪的时间里,它就有上百次自行重启:内存里所有的数据全部丢失,然后对面大楼里的指令寄存器从最初的内存单元开始执行。魔法水晶硬盘里储存的各个程序重新被调出,计算机重启完毕,恢复对机关城的控制。
每次出现这种情况,深海脑魔就会丢失对这台机器的控制。需要等待时机——只有等到机关城内出现紧急情况,需要机关兽出动时,通信程序才会被重新加载入内存,它才能重新夺回系统控制权。
除了自行重启之外,这台机器还可以手动重启。不过,是需要密码的。
这个房间里面也是一样的黑石、魔晶石、水晶线路构成的运算单元。
在房间外有一个黑石方台,台子上有四横四纵16个按键,被一个魔法水晶盖子盖住。
“你想重新启动这台机器?哈哈哈……你这是自寻死路!”深海脑魔自以为看出了墨莫的意图,它在墨莫脑海中的声音显得很高兴:
“看到角落里那堆黑石了吗?”
墨莫看到了,黑石控制台前面确实有一堆破烂不堪的黑石,然后墨莫等待着它的下文。
“那是我控制的黑石机关兽!”深海脑魔说道,
“我控制它来到这里,输入密语,但是合上盖子的瞬间,这个房间里闪烁一阵红光,它就这么碎了,我承认你的精神力很强大,法术也很强大,但是在这儿,你就是个渣!如果你输入了正确的密语,确实可以让我暂时失去控制这台机器的能力,但你要是输错了……哈哈哈!”
对于深海脑魔的叫嚣,墨莫理都没理。脚步没停,走到控制台前。
观察着上面的16个符号。这些符号就是古代林荫人的字母。他们的文字都由这16个字母所组成。估计也正是因为他们的字母正好有16个,才创造般的想到了这样一台计算机的实现。
在这台计算机中,一个基本数据单位也是16个比特。没有字节,只有字。内存上的程序和数据,也是以每16比特为一个单位的。
所以,墨莫猜测,这16个按键,很有可能表示从0到F的16进制数。
按照正常的工作程序,这个控制台是这样工作的:
首先,控制者打开水晶盖子,然后输入密码,再合上盖子,如果输入的密码正确,那么计算机重启;如果不正确,控制台前的那堆黑石碎片,就是下场。
只有一次机会。
但是墨莫从一开始就没打算输入密码重启它,墨莫打算彻底控制这台计算机,就用这16个按键!
经过观察,这台计算机,虽然结构与地球上的同类有所不同,但是基本执行原理还是相同的。
对面处理器大楼里有三个重要的寄存器,分别是指令指针IP,基址指针BP,栈顶指针SP。
其中,IP里面存着的16位二进制数字,永远是需要执行的下一条指令的地址。它是计算机最重要的寄存器。只要控制了IP,那么就控制了这台计算机。
当墨莫打开水晶盖子的时候,计算机首先会把接收这个控制台输入密码的程序调入内存,并把控制权移交给它。
怎么移交呢?
当然就是先把IP的值存入缓冲区,然后再把新程序在内存的位置交给IP。这样就完成了计算机控制权的移交。接下来IP就会从新位置取出指令执行,这些指令就是新程序的指令了。
为什么要先把IP的值压入缓冲区呢?当然是为了,在执行完了新程序之后,能够从缓冲区里取出这个值,IP回到调用新程序之前的地址,接着执行旧程序。
也就是重新将计算机控制权交还给深海脑魔。
BP和SP里面的16位二进制地址,是当前正在执行的程序,它的数据储存在内存中的范围,被称为缓冲区。缓冲区在内存中的位置,距离当前正在执行的位置,很远很远。此刻IP指向二楼,而BP和SP,指向四楼。
当新程序被调用,它的数据的开头位置,也就是BP也会被保存起来,以便执行完了新程序,能够找到这些数据。
这就是一个程序从打开,到关闭的基本过程。
【米娅,把这些符号给我换成数字,我看着眼晕。】
墨莫眼中的16个林荫文字母变成了0到F的十六进制数字。
墨莫一下子打开了水晶盖子。
下一刻,四楼的缓冲区首先发生了变化。BP的值被压进缓冲区保存,SP的值向下移动一格。
然后,对面大楼里,BP的值变成了和SP一样的值,此刻,旧程序的缓冲区,被封在了它俩上面。
下一步,四楼,IP的值被保存,SP再向下移动一格。接着,新程序被加载进了二楼的一段内存中。
对面处理器大楼上,IP的值发生了变化,新的IP值正是新程序所在的二楼位置。
最后,为了储存新程序的数据,也就是墨莫即将输入的密码,SP再向下移动了整整六百格!
然后计算机停下了,等待着墨莫的输入。
墨莫想都没想,瞅准最后一个按键,也就是F,不停的按。
米娅在心灵网络中不停的计数:【1,2,3……】
随着墨莫的输入,四楼内存里,那六百格的数据,从下到上,一格接着一格开始依次变为整整齐齐的FFFF、FFFF……
墨莫就这么一直输入,不停的按,四楼的FFFF一直向上延伸,距离那几个保存着寄存器数据的位置,越来越近。
直到,墨莫按下第六百次,抬头看了一眼,透过透明的魔法水晶,清楚的看到,在四楼缓冲区里,整齐的FFFF前面,就是保存的旧程序的IP值。
【米娅,那里的地址是多少?】
米娅:【经过计算,是DF19。】
墨莫点点头,不再输入千篇一律的FFFF,而是接着输入:DF1A……
当墨莫输入的时候,四楼的缓冲区,那保存着旧程序的IP值的那一格,被墨莫输入的数据覆盖掉了,直接变成了DF1A。
前面说过,这台机器的各个程序没有权限高低之分,IP的值在内存的哪里,那么那段内存上的程序就完全享有计算机的所有操控权。
墨莫此刻这个输入程序,那就是最高程序,输入什么,就一定会在内存里写什么,不管前面是什么东西,统统会给覆盖掉。
在覆盖掉旧程序的IP值后,墨莫根据解析出的CPU指令,开始在后面的内存空间中写程序。
这上面大概还有1MB的内存空间,对墨莫这种级别的程序员来说,甚至都可以做一个操作系统了。只见墨莫手指飞快,不停的在16个按键上按着。
四楼那原本是缓冲区的位置,也被飞快的改写着。
旧程序的IP值被覆盖,然后是旧程序的BP值被覆盖,然后是旧程序的数据被覆盖,乃至上面的更旧的程序、更上面的更更旧的程序的数据,纷纷被墨莫输入的代码覆盖。
直到,墨莫一直写到了内存的终点。
然后,墨莫手扶着这个操作台的水晶盖子,轻轻的合上了。
深海脑魔触手上的眼睛猛然睁开,恶狠狠的盯着墨莫,它好像看到了,下一刻,墨莫就会被那里的机关融化!
在墨莫合上盖子的那一刻,位于内存大楼二楼的这个程序,终于执行完毕。
内存大楼四楼缓冲区,DF19位置的内容,被传送给对面处理器的指令指针寄存器——IP。
正常情况下,按照机器的执行顺序,这个值就是旧程序的代码在内存二楼的位置。IP将执行位于那里的旧程序,也就是将计算机的控制权还给深海脑魔。
然而,这个值,早已不再是原来那个值了。它被墨莫替换成了——DF1A。
DF1A就是DF19的上一格,而那里的程序,不就是刚刚墨莫写的那些代码吗?
于是,机器开始忠实的执行墨莫输入的代码:
第一步,建立权限系统,只有特定代码前缀的程序,才可以被执行,否则就是无效的。
第二步,运行控制台输入程序,使得墨莫可以通过这个控制台继续编程。
深海脑魔等了几秒,等着墨莫被那个机关融化,然而那控制台的机关毫无反应。
不仅如此,它还发现,那个每次和它的牢房交换信号的程序,不见了!自己再次与这台机器断开了联系。
‘难道他成功了?’深海脑魔暗暗思索,‘怎么可能?他按了那么多下,怎么可能有那么长的密码?就算有,他又是怎么知道的?’
如果这使它困扰,那接下来发生的事,就让它感到恐惧了。
下一刻,关了它几百年的牢笼,这个魔法水晶构造的房间,在一声轻响过后,慢慢打开了……