我的世界大触制作红石电脑 最炫酷计算机
在我的世界中利用红石制作出一台电脑是很炫酷的,想必你一定会认为这是天方夜谈,不过小编要告诉你这绝对是可能的哦,今天游戏园小编就为大家带来了我的世界大触制作的红石电脑,希望大家能够喜欢!
这是总览,作品作者是TRP的Happy Water。无命令方块,16bit电脑,请善用只看楼主功能。
圈出来的是控制部分。
16bit CPU
8个16bit通用寄存器 R0 到 R7 ,其中R7为指令计数器。
512字节RAM(256字,因为数据线宽度为16bit)
ALU可完成
ADD ADC
SUB SBB
AND OR
NAND NOR
XOR NXOR
NOT
BitRightShift 等运算
设有四个状态标志位:CF OF SF ZF
条件跳跃指令可根据标志位情况判定是否跳跃。
(亦即if else 语句)
在我的世界中利用红石制作出一台电脑是很炫酷的,想必你一定会认为这是天方夜谈,不过小编要告诉你这绝对是可能的哦,今天游戏园小编就为大家带来了我的世界大触制作的红石电脑,希望大家能够喜欢!
这是总览,作品作者是TRP的Happy Water。无命令方块,16bit电脑,请善用只看楼主功能。
圈出来的是控制部分。
16bit CPU
8个16bit通用寄存器 R0 到 R7 ,其中R7为指令计数器。
512字节RAM(256字,因为数据线宽度为16bit)
ALU可完成
ADD ADC
SUB SBB
AND OR
NAND NOR
XOR NXOR
NOT
BitRightShift 等运算
设有四个状态标志位:CF OF SF ZF
条件跳跃指令可根据标志位情况判定是否跳跃。
(亦即if else 语句)
指令实例:
MOV [R0+R1],R2 ;将地址编号为 R0+R1 的内存单元中的数据移动到R2中
MOV [R0],R2
MOV R2,[R0,R1]
MOV N,R0 ;将立即数N移动至R0中,立即数位数为16bit
ADD R0,R1,R2 ;将R0与R1做加法运算,结果存至R2中
ADD R0,R1,R2 - FLAG ;同上,并且影响标志位
JNZ R0,R1,R2 ;若标志位ZF为0,则执行 ADD R0,R1,R2 指令。
JZ R0,R1 ;若标志位ZF为1,则将R0 复制给R1
注:若将最后一个寄存器换做 R7,则可完成对程序流程的跳转。
--------------------------
由于电路太过庞大,单机玩家请在地图中心的操作台启动机器,并保持在那里,以免局部电路失效导致死机或停机。
地图中央的操作台有一个按钮,一个拉杆,两个红石灯。分别为启动按钮和停机拉杆,两个红石灯分别用于指示停机拉杆状态和停机状态。
当停机拉杆处于非激活状态,按下启动按钮,机器即启动。
在机器启动后,激活停机拉杆,等待一段时间,待停机指示灯闪烁一下,则表示机器已停止。
在停机拉杆被激活的状态下按动启动按钮无效,虽然停机指示灯也会闪烁一下。
内存中前15个字中存放了内存检测程序,是测试时用的
汇编程序如下:
mov 15,r0
mov 1,r1
sub r0,r0,r2
mov -7,r6
mov [r0+r2],r3 ;循环起始
nor r3,r3,r4
mov r4,[r0,r2]
mov [r0,r2],r3
sub r3,r4,r3 F;影响标志位
add r1,r2,r2 ;不影响标志位
jz r7,r6,r7 ;若结果为0,则跳跃至前面 循环起始 位置
nor r5,r5,r5 ;除非出错,否则不应执行到这里
估计一台电脑回复量还没个画板多,醉了醉了
32x32像素活塞屏,像素大小为2x2。
屏幕本身的布线设计使得屏幕大小可以无限堆叠,背后的布线随水平分辨率线性增长,因而不会出现屏幕大了导致布线难度呈几何级数增长的尴尬情况。
显存512字节,可以缓冲4个完整的全副图层,图层之间可由GPU完成图元合并。(亦即可以一个图层放“桌面”,一个图层放“选择框”)GPU的硬件加速可使得图形操作速度远远超过CPU一行一行地操作。
GPU亦可完成帧序列播放动作,亦即光标闪烁,复选框闪烁等基本动作可完全脱离CPU,大大分担了CPU的工作量。
前台屏幕可以锁定一副画面,后台的图形绘制过程不影响屏幕上的图像。
显存与内存独立,图中屏幕右半边的就是显卡的显存,GPU部分被遮住,且还在调试中。
给下载地址了
http://pan.baidu.com/share/link?shareid=1306820514&uk=3343353160
下面详细介绍指令的机器码:
1.算术逻辑运算
ADD X+Y->Z :0 0 F 1 0 0 0 X X X Y Y Y Z Z Z //每一个字母代表一个比特位,以下同
即将寄存器X与寄存器Y中的数值相加,结果存入寄存器Z中。
F位为标志位影响位(以下同)。若为0,则不影响标志位;为1,则影响标志位。
CPU设有CF ZF SF OF四个标志位,标志位作为条件执行指令的条件判断依据用。
ADC X+Y->Z :0 0 F 1 1 0 0 X X X Y Y Y Z Z Z
意义同上,但是带进位。(CF标志位)
SUB X+Y->Z :0 0 F 1 0 1 0 X X X Y Y Y Z Z Z
用寄存器X减去寄存器Y中的数值,结果存入寄存器Z中。
SBB X+Y->Z :0 0 F 1 1 1 0 X X X Y Y Y Z Z Z
同上,但是带借位。(CF标志位)
AND X+Y->Z :0 0 F 0 1 1 1 X X X Y Y Y Z Z Z
寄存器X与寄存器Y中的数值按位相与,结果存至Z。
注意,对于逻辑计算而言,CF 和 OF无意义,但若影响标志位,则这两个标志位也将被刷新,其后的值将不可预见。
NAND X+Y->Z :0 0 F 0 0 1 1 X X X Y Y Y Z Z Z
寄存器X与寄存器Y中的数值按位相与非,结果存至Z。
OR X+Y->Z :0 0 F 0 0 0 1 X X X Y Y Y Z Z Z
寄存器X与寄存器Y中的数值按位相或,结果存至Z。
NOR X+Y->Z :0 0 F 0 0 0 1 X X X Y Y Y Z Z Z
寄存器X与寄存器Y中的数值按位相或非,结果存至Z。
XOR X+Y->Z :0 0 F 0 0 0 0 X X X Y Y Y Z Z Z
寄存器X与寄存器Y中的数值按位相异或,结果存至Z。
NXOR X+Y->Z :0 0 F 0 1 0 0 X X X Y Y Y Z Z Z
寄存器X与寄存器Y中的数值按位相同或,结果存至Z。
BRS X->Z :0 0 F 1 0 0 1 X X X X X X Z Z Z
寄存器X中的数值向右逻辑移位1位,结果存至Z。若移出位为1,切F位为1,则设置标志位CF。
注意:指令中X寄存器的编号出现了两次。
2.数据传送指令
MOV [X+Y]->Z :1 0 0 0 1 0 0 X X X Y Y Y Z Z Z
将地址编号为X+Y的内存单元中的数据传送至寄存器Z中。
MOV [Y]->Z :1 0 1 0 1 0 0 X X X Y Y Y Z Z Z
将地址编号为Y的内存单元中的数据传送至寄存器Z中。
MOV Z->[X+Y] :1 0 0 0 0 0 0 X X X Y Y Y Z Z Z
将寄存器Z中的数据传送至地址编号为X+Y的内存单元中。
MOV Z->[Y] :1 0 1 0 0 0 0 X X X Y Y Y Z Z Z
将寄存器Z中的数据传送至地址编号为Y的内存单元中。
MOV N ->Z :1 0 0 0 1 0 1 X X X Y Y Y Z Z Z
将立即数N传送至寄存器Z中。立即数为16bit(占一个完整的内存字),紧挨在这条操作指令之后。
3.条件执行指令
条件执行指令,其实现就是条件加法,即根据指令操作码中的条件编号,
与当前标志位中的状态进行比对判断,若满足条件,则执行一条加法指令,否则跳过当前指令。
加法指令本质上就是 ADD X+Y->Z 命令,然加法指令本身可操作R7寄存器(即指令计数器),
因而可以利用条件加法指令实现条件跳转功能,进而实现if goto的效果。
加法的源操作数可以是X+Y,亦可只有Y,即直接Y->Z。
也就是说,利用这条指令,即可实现绝对地址跳跃,亦可实现相对地址跳跃,方便实现地址无关代码(如动态链接库)。
条件加法指令的编码格式为:
| 0 | 1 | S | OP1| OP2| OP3| OP4| X | X | X | Y | Y | Y | Z | Z | Z |
S位为0,则ADD X+Y->Z 形式;
S位为1,则为Y->Z形式;
OP1~OP4为条件编码,具体编码意义见下表。
注:控制器在每次完成取指后(尚未执行指令之前)既已经将指令计数器加1,若作相对跳跃,请注意偏移量的计算。
OP2 OP1
OP4 OP3
0 0
0 1
1 0
1 1
0 0
JZ
JNZ
JS
JNS
0 1
JC
JNC
JO
JNO
1 0
JA
1 1
JG
JNG
JGE
JNG
二、软件编程与物理结构关系
地址空间采用16位平面地址空间,每个内存单元字长为16bit,不可拆分。
当前内存单元数为256字,也就是512字节容量。
在地图中,靠近控制器方向(南)为LSB,反方向(北)为MSB。
RAM部分为上下两层,每层128个字。这128个字又自东向西排列,每一行(南北走向)为一组,一组4个,东西方向并列32组。
地址排列顺序为
上层自南数第一个 -> 下层自南数第一个 -> 上层自南数第二个 -> 下层自南数第二个 -> ………… ->上层自南数第四个 -> 下层自南数第四个
-> 向西一格,上层自南数第一个 -> ……
以此类推,蛇形前进。
控制器部分位于地图南段,介于ALU和RAM之间的接缝处。分上下五层,每层各负责一种操作。
其中下数第二层,也就是有蓝色标记的一层,为取指层,负责取指令动作,启动机器就是对它发出启动指令。
当取指完成以后,它会输出一个信号传递个下一个控制器,该信号通过活塞组成的交换选择网格后到达目标控制器。
目标控制器的选取由指令编码决定,指令编码的译码结果通过长线从地图北端附近传输至交换网格的四个活塞处,四个活塞响应信号完成信号通道交换。
当目标控制器接收到控制信号后,开始执行相应的操作(算术逻辑运算、数据输入、数据输出、立即数输入等四种操作)。
当目表控制器完成动作以后,亦会发出一个信号表明动作完成,该信号会被传输至取指控制器的输入信号端,如此完成循环,周而复始。
当激活停机拉杆后(位于地图中间的控制平台上),活塞会阻塞信号回环,并将这个信号转发至停机指示灯上(位于地图中的控制平台上),此时就会看到停机指示灯闪烁一次。
相关下载
相关文章
更多+热门搜索
手游排行榜
- 最新排行
- 最热排行
- 评分最高
-
休闲益智 大小:77.4M
-
动作塔防 大小:64.64M
-
动作塔防 大小:500MB
-
模拟经营 大小:38M
-
其他游戏 大小:12.01mb
-
冒险解谜 大小:1.57G
-
角色扮演 大小:57.89MB
-
休闲益智 大小:298.7 MB
-
角色扮演 大小:3.81M
-
冒险解谜 大小:20MB