您的當前位置:游戲狗 > 我的世界 > 正文

          32位無命令方塊紅石電腦簡介及設計原理

          2016-04-11 12:11:41來源:mcbbs編輯:HappyWater

          本作品是一臺32位紅石電腦,CPU部分是一個 32 位通用處理器,配有512Byte RAM(其中 128Byte為顯示緩沖區),8 鍵輸入(其中四個方向鍵,四個功能鍵),32x32像素屏幕輸出。

          本電腦由論壇小組The Redpixel成員HappyWater于2016年4月完成,@乙烯_中國代為發布至mcbbs。機器編號為RSC-3230。

          RSC-3230使用說明鏈接://pan.baidu.com/s/1bF9nCq密碼: 艦C

          RSC-3230最新存檔鏈接://pan.baidu.com/s/1pLy4aH9密碼: 艦C

          一、作品總覽

          本作品總體由運算器模塊,存儲器模塊,控制器模塊,顯示屏模塊,以及輸入按鈕等部分組成。下面簡要介紹各個模塊。

          1、運算器

          運算器包含一個加法器,兩個單向串行移位器(分別對應左移和右移),一個串行乘法器和一個串行除法器。運算器組可以完成加減乘除四則運算,與或非邏輯,移位運算等運算。

          2、存儲器

          存儲器總共 128個字,每個字長 32 位,不允許非對齊訪問。建筑結構為多層結構,總共分四層,每層容量 128Byte,其中最上面一層被連接在顯示屏上,使用屏幕刷新指令即可將這部分存儲器中的數據顯示在屏幕上。存儲器中,靠下的層為地址低位,靠上的為高位。

          3、控制器

          控制器部分負責產生控制時序,指揮整機的運轉。控制器也是分層結構的,面板上每一行對應內部的一層。每一層負責一種基本動作,按下每一層右邊的按鈕,即可執行這一層的動作。

          在正常自動運行時,控制器會依照指令,輪流執行相應的動作,完成程序預期的操作和運算。在單步運行時,玩家可以手動執行每一個動作,觀察程序運行狀態,以便調試程序。

          下數第四層,也就是橙色的一層為取指動作層。通常情況下,按下這一層的啟動按鈕即是啟動整臺機器。

          在面板右側有一個拉桿,是整機的停機拉桿。當退出游戲時,應先停止機器的運行。MC在保存地圖時,對各個部分的保存時間并不同步,若此時機器處于運行狀態,則可能導致紅石電腦出錯,甚至處于失控狀態。

          4、顯示屏

          顯示屏為32x32 像素紅燈屏幕。利用活塞BUD暫存屏幕畫面,當程序正在繪制顯示緩沖區中的畫面時,顯示屏上的畫面不受影響,當繪制完成后,可使用刷新屏幕指令將畫面刷新到屏幕。

          6、輸入按鍵

          本作品提供了8 個輸入按鍵,如圖中所示,中間是四個方向鍵,下面四個是功能鍵。

          8 個按鍵直接連接在寄存器 R30上,軟件訪問寄存器 R30即可獲取當前按鍵狀態,對R30寫入則無意義。R30 最高 8bit中,每一個 bit對應一個按鍵,從最高位(31位)向低位依次為“上”“右”“左”“下”四個按鍵,緊接著下面從左向右依次四個功能按鍵。

          當按鍵沒有按下時,對應 bit位為0,按下時對應比特位為 1。R30中其余 bit位沒有連接外部設備,可留給玩家自己MOD 添加。按鍵按下后并不會對系統產生中斷,按鍵信息的輸入只能通過軟件輪詢實現。

          二、指令表

          本CPU的指令為32位定長,在內存中對齊存放。內存訪問時忽略地址的最低 2bit。

          CPU中包含32個 32 位通用寄存器,其中R31 為指令計數器,R30 為鍵盤狀態寄存器。當指令運算中引用 R31時,R31 永遠指向當前指令的下一條指令地址。當指令執行結果修改 R31時,程序流程即跳轉。

          1、 數據傳送指令

          單寄存器指針內存讀取指令:LDRs R1,R2

          即以寄存器 R1 中的數值為指針訪問內存,將內存中的數據傳送寄存器 R2 中。兩個寄存器編號可以相同。

          雙寄存器指針內存讀取指令:LDRd R1,R2,R3

          即以寄存器 R1、R2 之和為指針訪問內存,將內存中的數據傳送到寄存器 R3中。三個寄存器編號可以交叉。

          單寄存器內存寫入指令:STRs R1,R2

          道理同上,以 R1 為指針,將 R2 寫入內存。

          雙寄存器指針內存寫入指令:STRd R1,R2,R3

          道理同上,以 R1、R2之和為指針訪問內存,將 R3 寫入內存。

          立即數輸入指令:LDRi R1, $xx

          即向寄存器 R1 中輸入一個有符號整數立即數。該立即數長度 19 位,符號擴展至32位存入R1.

          上述指令編碼如下:

          LDRsSTRsLDRdSTRd

          0000010010001100 =>AAAA

          [11][AAAA][00][R1][R2][R3][000000000] 左邊 msb,右邊 lsb。

          LDRi R1, $int

          [11][0010][00][R1][int]

          例:

          LDRs R1, R2 11 0000 00 00001 00000 00010 000000000

          STRd R4, R5, R6 11 1100 00 00100 00101 00110 000000000

          LDRi R16 , $12345 11 0010 00 10000 1001110000001100000

          LDRi R7 , $ -19 11 0010 00 00111 1111111111111101101

          2、 算術運算及邏輯運算指令

          本機器中ALU 支持 ADD SUB OR NOR AND NAND XOR NXOR 等指令,指令結構相似。

          ADD R1, R2,R3即將R1,R2中的數值相加,結果存入R3 中。三個寄存器的編號可以交叉。 SUB R1, R2, R3 即將R2-R1結果存入R3。三個寄存器編號可以交叉。

          OR、NOR、AND……等其余指令類似不再贅述。

          本機中移位器支持邏輯左移(BSL)、循環左移(BCL)、邏輯右移(BSR)、循環右移(BCR)以及算術右移(BAR)等指令。

          BSL R1,R2,R3 即將R1 中的數值邏輯左移R2 位,將結果存入R3。三個寄存器編號可以交叉。R2中的數值忽略高位,僅關注最低 5bit。

          BCL、BSR、BCR、BAR等指令同理,不再贅述。

          本機中乘法器和除法器分別完成乘法和除法指令。需注意的是,乘法器與除法器指令涉及4個寄存器,兩個源操作數,兩個目的操作數。

          MUL R1,R2,R3,R4 即將R1 R2 中的數值相乘,結果存入R3 R4中。其中R3存放結果低位,R4 存放結果高位。四個寄存器的編號可以交叉,若R3 R4編號相同,則最終寄存器中只存放結果低位。

          上述指令編碼如下:

          [00][AAAA][F][C][R1][R2][R3][R4][A][000](注意:A 字段有前后兩組,共5bit)

          ADD SUB OR NOR AND NANDXORNXOR

          00000 01000 00001 00101 11101 11001 00110 00010 => AAAAA

          (本組指令可影響標志位)

          BSL BSR BCL BCR BAR MUL DIV

          00011 10011 01011 11011 101111000010100 => AAAAA

          (對本組指令使用標志影響位結果將不可預知)

          指令中,F和C 各占1個bit。利用這兩個指示位可實現if goto指令。

          F為標志影響位,若為1,則本指令執行結果將影響標志位,若運算結果為0,則標志位為1,反之標志位為0。

          C為條件執行位,若本為1,則本指令在標志位為1 時才執行,否則將跳過不執行。若本位為 0,則本條指令無條件執行。

          3、 屏幕控制指令

          清白屏:WS011000[其余填零]

          清黑屏:BS010100[其余填零]

          刷新屏:RS010010[其余填零]

          WS和 BS用于清屏,區別是WS讓全屏變亮,BS 讓全屏變暗。由于顯示屏利用活塞BUD 暫存畫面,有時活塞可能“失去粘性”,此時應使用清白屏指令使其恢復。

          刷新屏指令將RAM 中顯示緩沖區里的數據顯示在屏幕上。

          顯示緩沖區為128 字節,每4 字節對應屏幕上一行,高位對應靠左的像素,低位對應靠右的像素。靠高地址端的對應屏幕底下的像素,靠高地址端的對應屏幕上方的像素。

          三、使用方法簡述

          本機未設置 ROM,整個存儲器部分都為 RAM,既可存放指令,亦可存放數據。可手動修改每一個存儲位狀態以完成編程。若不希望指令被意外修改,可將存儲區相應的存儲位上的活塞去除,以固定存儲位狀態。

          在機器處于停止狀態時,按下下圖中左數第二個燈上的按鈕即可將R31 清零,以完成程序復位。軟件的第一條指令應按放在內存中的第一個單元內。可以在第一個內存單元處安置一條跳轉指令,即可跳躍至任意程序入口。軟件亦可在各個寄存器中存放初始化數據,而不必各個都從RAM 中加載,以節省RAM 空間和運行加載時間。

          如上圖所示,控制器面板中橙色的一層為指令讀取動作層。按下右邊的按鈕,機器將從R31所指向內存單元讀入指令并存入指令暫存器中,然后立即跳躍到對應的動作層去執行該指令。

          如圖所示,圖中的拉桿為停機拉桿。任意時刻,若拉桿充能,則當前指令執行完畢后,整機便停止運行,機器停止時,左邊的指示燈會閃爍一次。

          在拉桿充能的情況下,按下取指令動作的按鈕,則機器將完成取指和執行兩個動作后停止運行。此方法可適用于程序單步執行。

          若按下其它各層動作指令按鈕,則將按各層方式解析當前指令并執行。每條指令只可以對應一個動作層,若啟動的動作層與當前指令不匹配,則結果將不可預知。

          屏幕面前地板上的按鍵連接至寄存器 R30上,軟件需輪詢 R30以完成按鍵輸入,無按鍵中斷功能。

          相關新聞

          ?游戲狗 Gamedog.cn 北京手游天下數字娛樂科技股份有限公司 版權所有
          安全百店 ANVA自律組
          游戲狗微信關注游戲狗訂閱號
          主站蜘蛛池模板: 国产麻豆欧美亚洲综合久久| 最近最好的中文字幕2019免费| 日韩国产成人精品视频| 国产在线一区二区三区av| eeuss在线播放| 欧美又大粗又爽又黄大片视频黑人| 国产日韩精品欧美一区喷水| 一本一本久久a久久综合精品 | 国产精品JIZZ在线观看老狼| xyx性爽欧美| 日本爽爽爽爽爽爽在线观看免| 农村老熟妇乱子伦视频| 992tv国产人成在线观看| 在线观看xxx| 亚洲AV无码乱码在线观看性色| 欧美欧洲性色老头老妇| 最新国产在线观看| 人妻互换一二三区激情视频| 色综合久久久久综合99| 天天拍天天干天天操| 亚洲人妖女同在线播放| 用我的手指搅乱我吧第五集| 国产乱码一区二区三区| 污视频免费网站| 无人视频在线观看免费播放影院| 亚洲人成电影院| 波多野结衣教师在线| 国产91精品一区二区| 99re99热| 成人影片麻豆国产影片免费观看| 五月天亚洲色图| 欧美日韩视频在线第一区| 国产乱子伦农村xxxx| 男人天堂资源站| 在线观看亚洲成人| 一道本在线观看| 日本一二三精品黑人区| 人妻无码αv中文字幕久久琪琪布 人妻无码一区二区三区 | 日韩美女在线视频网站免费观看| 午夜免费不卡毛片完整版| 337p日本欧洲亚洲大胆人人|