999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種快速的浮點乘法指令設計方法

2021-07-16 08:12:58宗德才王康康
計算機應用與軟件 2021年7期
關鍵詞:指令設計

宗德才 王康康

1(常熟理工學院計算機科學與工程學院 江蘇 常熟 215500) 2(江蘇科技大學數理學院 江蘇 鎮江 212003)

0 引 言

目前,國內很多高校計算機組成原理實驗教學內容主要是基于清華大學計算機系研制的TEC-XP16 教學計算機而開展的。為了使學生更好地掌握計算機的各個組成部件的工作原理,理解指令的執行流程,系統地建立計算機整機概念,迫切需要開發一些設計性實驗,如在CPU的控制器中設計一些新指令。

文獻[1]設計了一種4位乘法指令和一種8位除4位除法指令,文獻[2]、文獻[3]將EDA 軟件Proteus 應用于教學實驗中,缺點是很難形成對計算機硬件的直觀理解,并且都未設計浮點乘法等復雜指令。文獻[4]設計了一個8位模型機,設計了14條指令,但未設計浮點乘法等復雜指令。文獻[5]設計了加法等指令,但并未設計浮點乘法指令等復雜指令。文獻[6]要求學生至少設計實現7條指令,但并未要求設計浮點乘法等復雜指令。

文獻[7]介紹了TH-union 教學機微程序控制器的原理及實驗步驟,沒有擴展新指令。文獻[8]在TEC-2000教學機微程序控制器中設計實現了4條簡單的擴展指令。文獻[9]在TEC-2000教學機微程序控制器中設計實現了2條簡單的擴展指令。文獻[8]和文獻[9]在TEC-2000教學機微程序控制器中擴展的指令都比較簡單。文獻[10]研究了在TEC-XP16組合邏輯控制器中擴展簡單指令的方法。文獻[11]提出一種微程序控制器中8位無符號乘法指令與8位無符號除法指令的設計方法,均需要二十多條微指令組成的微程序來實現,設計好微程序后都采用手工方式修改控制器源程序,其效率低、速度慢且容易出錯。

本文基于TEC-XP16教學機,提出微程序控制器中32位浮點乘法指令的一種快速的設計方法。為解決人工方式將每條匯編指令轉換成一條或多條微指令速度慢且容易出錯等問題,設計了匯編程序表和微程序表,并設計了一個Python程序,能夠根據匯編程序直接自動生成微程序。同時,為解決手工修改控制器ABEL語言源程序速度慢及容易出錯等問題,提出一種能夠自動修改控制器的ABEL語言源程序的方法。實驗結果表明,所設計的32位浮點乘法指令的功能是正確的,平均只需要1.9 s就能根據匯編程序表自動生成微程序表,平均只需0.7 s就能根據微程序表、微指令轉移判斷條件表和微程序入口地址表自動修改并生成控制器ABEL語言源程序,極大提高了浮點乘法指令的設計速度。該方法也可推廣到其他復雜指令的設計過程上。

1 在微程序控制器中設計浮點乘法指令

在TEC-XP16教學機微程序控制器中擴展指令時,首先,設計新指令對應的微程序,根據微程序修改描述 MACH 芯片功能的 ABEL語言源程序[12],然后將修改后的ABEL語言程序用ISP LEVER軟件編譯成.jed文件,接著將.jed文件下載到MACH芯片中,最后,在教學機上調試運行包含新指令的教學機程序。

在現有的 TEC-XP16 教學機中,微程序控制器只能執行29條基本指令。本文在TEC-XP16 教學機微程序控制器中設計實現了一種32位浮點數乘法指令。

在TEC-XP16教學機的微程序控制器中設計浮點乘法指令的主要過程如下:

1) 首先,確定32位浮點乘法指令FMUL的格式和功能,如表1所示。

表1 FMUL指令的指令格式與功能

2) 按32位浮點乘法指令的功能和格式,設計32位浮點乘法算法,如算法1所示。

算法132位浮點數乘法運算算法

被乘數與乘數都用32位IEEE 754浮點數表示,被乘數存放在R1、R0寄存器,乘數存放在R3、R2寄存器,乘積為32位IEEE 754浮點數,最后,乘積存放在R1、R0寄存器中。

(1) 如果R1和R0都是0,即被乘數近似為0,則結果近似為0,否則,轉步驟(2)。

(2) 如果R3和R2都是0,即乘數近似為0,則結果近似為0,否則,轉步驟(3)。

(3) 取被乘數階碼部分,并右移一位,保存在R6寄存器中,R6中結果為 00JJ JJJJ JJ00 0000,其中J表示階碼部分。

(4) 取乘數階碼部分,并右移一位,保存在R7寄存器中,R7中結果為 00JJ JJJJ JJ00 0000。

(5) 階碼求和:(R6)+(R7)→R6。

(6) 浮點數中階碼用移碼表示,移碼是在階碼真值基礎上加127,階碼相加時,127被加了2次,因此,需要把階碼和減去127。即(R6)-(0001 1111 1100 0000)2→R6。

(7) 將乘積的符號位保存在R7最高位。

(8) 取被乘數的尾數部分,并恢復隱藏位,存放在R1、R0寄存器中,R1、R0中結果為 0000 0000 1WWW WWWW WWWW WWWW WWWW WWWW,其中W表示階碼部分。

(9) 取得乘數的尾數部分,并恢復隱藏位,存放在R3、R2寄存器,R3、R2中結果為 0000 0000 1WWW WWWW WWWW WWWW WWWW WWWW。

(10) 將R9、R8清為0,R9、R8存放部分積。

(11) 如果R2為0,只需移位8次,則令R15為1,R10為8,將R3內容傳送到R2,R3清為0;如果R2為非0,則令R15為0,R10為16。

(12) 將R2右移一位,R2最低位移入C觸發器。

(13) 如果C=1,則 R1//R0 + R9//R82→ R9//R8;如果C=0,則轉移到步驟(15)。

(14) 如果R10不等于1,則執行步驟(15);如果R10為1,并且R15為1,則轉移到步驟(18)(尾數最高位為整數1,所以不需要右移);如果R10為1,且R15為0,則執行步驟(15)。

(15) 將R9//R8//R2聯合右移一位。

(16) R10減1。

(17) 如果R10為0,則執行步驟(18),否則轉步驟(13)。

(18) 如果R3為0,則執行步驟(19);否則,令R15為1,R10為8,將R3內容傳送到R2,R3清為0,轉步驟(12)。

(19) 將R9、R8內容分別送到R1、R0,將R2內容送到R9。

(20) 如果R1中尾數最高位為0,則執行步驟(21),否則,執行步驟(22)。

(21) 將R1//R0//R9聯合右移一位,階碼加1,轉步驟(20)。

(22) 如果R9最高位為1,則R1//R0 +1 → R1//R0,否則,R1//R0不變。

(23) 如果R1中尾數最高位的左邊一位為1,則執行步驟(24),否則,執行步驟(25)。

(24) 將R1//R0//R9聯合右移一位,階碼加1。

(25) 如果R6最高位為1,則為下溢,結果為0,結束;如果R6次高位為1,則為上溢,令C=1,結束;如果R6最高兩位為00,則執行步驟(26)。

(26) R6最高兩位為00表示結果沒有溢出,令C=0,將R6左移一位,調整R1寄存器的內容,R1最高位即R7最高位,R1次高位開始的8位即R6中階碼部分,R1低7位即高7位尾數不變,結束。

如圖1所示,在IEEE 754格式的32位浮點數中最高位是數符,表示浮點數的正負,階碼用移碼表示,階碼的真值都被加上一個偏移量,對于32位浮點數的偏移量為127。

1位數符8位階碼7位尾數 16位尾數

在IEEE 754格式浮點數中尾數部分通常都是規格化表示的,即非0的有效位最高位總是1,有效位呈如下形式:1.ffff…fff,在實際的表示中,對于32位浮點數,這個整數位的1被省略,稱為隱藏位。

TEC-XP16教學機中共有16個16位的通用寄存器R0~R15。32位浮點數需要用兩個通用寄存器來表示。

3) 根據算法1,用TEC-XP16教學機的匯編指令編寫程序實現算法1。同時,設計數據庫表。

Python語言具有簡單易學、免費開源和可擴展移植性好等特性[13],因此,選擇Python語言作為程序設計語言。

如圖2所示,TEC-XP16教學機中,一條微指令由16位的下地址字段和32位的控制命令字段共同組成[14]。

下地址命令碼微轉移條件MRWI2-I0I8-I6I5-I3B口地址A口地址SSTSSHSCIDC2DC116位下地址字段32位控制命令字段

根據TEC-XP16教學機微指令的格式,設計了微程序表MProgram,如表2所示,用于保存32位浮點數乘法指令對應的由微指令組成的微程序。

表2 MProgram微程序表

為了實現根據匯編程序自動生成微程序這一功能,設計了匯編程序表AsblProgram,如表3所示,用于保存根據32位浮點數乘法運算算法編寫的100條匯編指令組成的匯編程序。

表3 AsblProgram匯編程序表

圖2中,命令碼用于控制微指令的執行順序,命令碼CI3-CI0為1110時,順序執行。命令碼CI3-CI0為0010時,根據指令的操作碼確定該指令對應的微程序的入口地址。設計了微程序入口地址表MPFAdr,如表4所示,用于保存32位浮點數乘法指令對應的微程序的第一條微指令的地址。

表4 MPFAdr微程序入口地址表

命令碼CI3-CI0為0011時,用于條件微轉移控制,如表5所示,微轉移條件SCC3-SCC0用于條件微轉移時給出轉移依據的條件,條件滿足時發生轉移,下一條微指令的地址為當前微指令中下地址字段的內容;條件不滿足,順序執行[15]。

表5 條件微指令轉移所依據的判斷條件表

根據表5設計了CC微指令轉移判斷條件表,用于保存微指令轉移的條件,如表6所示。

表6 CC微指令轉移判斷條件表

由于每一條匯編指令轉換后的微指令數目不同,設計了ISEA表(如表7所示)用于存儲每一條匯編指令轉換成為微指令后,對應的第一條微指令地址start和最后一條微指令的地址end。

表7 ISEA匯編指令微指令地址表

4) 在匯編程序表AsblProgram中輸入實現32位浮點數乘法運算算法的匯編程序,共有100條匯編指令,在微程序入口地址表MPFAdr 中輸入FMUL指令的操作碼1110 1100,微程序入口地址為0011 1100。

5) 根據算法2和算法3,用Python語言編程(記為程序1),能夠自動將AsblProgram表中的匯編程序轉換成微程序并寫入MProgram表,根據算法4為JRZ/JRNZ/JRC/JRNC/JRS/JRNS/JR轉移類指令更新其微指令中的下地址字段Nadr,根據算法5為JRZ/JRNZ/JRC/JRNC/JRS/JRNS指令生成CC表。

算法2根據AsblProgram表中的匯編程序生成MProgram表和ISEA表的算法

(1) 從AsblProgram表中查找所有記錄的最大Number字段值,記為maxNum,令i=1。

(2) 查找AsblProgram表中Number字段等于i的記錄,記為AsbInsti。

(3) 如果記錄AsbInsti的Itype為2,即為MVRD指令,則根據算法3將MVRD Ri,DATA指令轉換成微指令并寫入MProgram表,同時在ISEA表中寫入MVRD指令對應的第一條微指令的地址start和最后一條微指令地址end;如果記錄AsbInsti的Itype為1,即為MVRR指令,則只需轉換成一條相應的微指令并寫入MProgram表,同時在ISEA表中寫入MVRR指令對應的第一條微指令的地址start和最后一條微指令地址end;如果記錄AsbInsti的Iname為OR、AND、ADD、SUB、XOR、TEST、ADC、CMP、SHR、RCR、SHL、INC、DEC、JR、JRZ、JRNZ、JRC、JRNC、JRS、JRNS、CLC、RET指令,則只需要轉換成一條相應的微指令并寫入MProgram表,同時在ISEA表中寫入待轉換匯編指令對應的第一條微指令的地址start和最后一條微指令地址end;如果記錄AsbInsti的Iname為PSHF、POPF指令,則需要轉換成兩條相應的微指令并寫入MProgram表,同時在ISEA表中寫入待轉換匯編指令對應的第一條微指令的地址start和最后一條微指令地址end。

(4)i=i+1,重復步驟(2)和步驟(3),直到i>maxNum結束。

在本文設計的實現FMUL指令的匯編程序中,用到的MVRD Ri,DATA指令中,DATA值有7F80、1FC0、8000、007F、0010、0001、0008、0040、0080、0100。根據DATA值的特點,設計了算法3,算法3的設計目標是盡量用最少的微指令實現MVRD指令。

算法3MVRD Ri,DATA指令轉換成微指令算法

(1) 將DATA轉換成16位二進制數a。

(2) 計算a中1的位數,記為num_1(a)。

(3) 如果num_1(a)大于1,則執行步驟(4),否則,執行步驟(12)。

(4) MVRD指令的第一條微指令為SUB指令對應的微指令,該微指令執行后得到 1111 1111 1111 1111。

(5) 計算將1111 1111 1111 1111采用先左移后右移的方法得到a的次數,記為shiftlr(a)。

(6) 計算將1111 1111 1111 1111采用先右移后左移的方法得到a的次數,記為shiftrl(a)。

(7) 如果shiftlr(a)小于等于shiftrl(a),則執行步驟(8),否則,執行步驟(10)。

(8) 生成16-num_1(a)條SHL指令對應的微指令。

(9) 生成shiftlr(a)+num_1(a)-16條SHR指令對應的微指令,結束。

(10) 生成16-num_1(a)條SHR指令對應的微指令。

(11) 生成shiftrl(a)+num_1(a)-16條SHL指令對應的微指令,結束。

(12) 計算由0000 0000 0000 00001得到a的次數,記為leftshift2(a),則由DATA得到a需要leftshift2(a)+2條微指令。

(13) 計算由1111 1111 1111 11111得到a的次數,記為shiftlr(a),則由DATA得到a需要shiftlr(a)+1條微指令。

(14) 如果leftshift2(a)+2小于等于shiftlr(a)+1,則執行步驟(15),否則執行步驟(18)。

(15) 生成SUB指令對應的微指令,該微指令執行后得到0000 0000 0000 0000。

(16) 生成INC指令對應的微指令,該微指令執行后得到0000 0000 0000 0001。

(17) 生成leftshift2(a)條SHL指令對應的微指令,結束。

(18) 生成SUB指令對應的微指令,該微指令執行后得到 1111 1111 1111 1111。

(19) 生成shiftlr(a)條SHL指令對應的微指令,結束。

算法4為JRZ/JRNZ/JRC/JRNC/JRS/JRNS/JR轉移類指令生成微指令中的下地址字段Nadr算法

JRZ、JRNZ、JRC、JRNC、JRS、JRNS都只需要轉換成一條微指令即可,但是要根據轉移目標地址更新Nadr字段值。

(1) 從AsblProgram表中查找Itype為3或4的所有記錄(JRZ、JRNZ、JRC、JRNC、JRS、JRNS指令的Itype為3,JR指令的Itype為4),假設查詢結果有n條記錄,令i=1。

(2) 根據查詢結果中記錄i的Number字段值在ISEA表中查找start字段值,并轉換成微指令地址,記為kkk。

(3) 在AsblProgram表中查找Label字段等于查詢結果中記錄i的DstAdr字段值的記錄的Number字段值,記為number。

(4) 在ISEA表中查找Number字段等于number的記錄的start字段值,并轉換成8位二進制,記為start66。

(5) 更新MProgram表中MIadr字段等于kkk的記錄的Nadr字段值為start66。

(6)i=i+1,重復步驟(2)-步驟(5),直到i>n結束。

算法5為JRZ/JRNZ/JRC/JRNC/JRS/JRNS指令生成CC表算法

(1) 從AsblProgram表中查找Iname為JRZ/JRNZ/JRC/JRNC/JRS/JRNS的所有記錄,假設查詢結果有n條記錄,令i=1。

(2) 在AsblProgram表中查找Label字段等于查詢結果中記錄i的DstAdr字段值的記錄的Number字段值,記為number。

(3) 在ISEA表中查找Number字段等于number的記錄的start字段值,并轉換成8位二進制,記為start66。

(4) 如果CC表中還沒有Nadr等于start66的記錄,則在CC表中插入一條記錄,否則,轉步驟(5)。

(5)i=i+1,重復步驟(2)-步驟(4),直到i>n結束。

6) 根據算法6和算法7,用Python語言編程(記為程序2),能夠根據MPFAdr表以及程序1生成的MProgram表、CC表自動生成實現了32位浮點乘法指令的控制器源文件m256c6.abl。

算法6自動修改并生成微程序控制器源程序的Python語言實現的算法

(1) 打開控制器源程序文件m256c.abl,讀取m256c.abl文件的所有行存放在list1列表對象中。

with open('m256c.abl', 'r') as f1:

list1 = f1.readlines()

(2) 連接mpdatabase.db數據庫。

db=sqlite3.connect('mpdatabase.db')

(3) 從MPFAdr表中讀取所有記錄,將所有記錄的Iname字段值和Opcode字段值組成一個字符串a,字符串a為:FMUL=(IR==[1,1,1,0,1,1,0,0]);在list1列表對象中找到“Expand Instruction here ”字符串,將該字符串替換為字符串a。

(4) 從CC表中讀取所有記錄,根據這些記錄的SCC字段值、Iname字段值、Nadr字段值和Condition字段值修改CC0表達式,如圖3所示,圖3中黑底部分為增加的部分。

圖3 修改后的CC0表達式

(5) 對MPFAdr表中的每一條記錄,根據MPadr字段值,在list1列表對象中找到D0-D7邏輯表達式所在的行并進行修改,例如,FMUL指令的MPadr字段值為0011 1100,則D2、D3、D4、D5表達式中需增加FMUL信號;由于m256c.abl文件中D0-D7表達式出現在CC0表達式后面,因此,在list列表中查找D0-D7時,可以從CC0表達式的下一行開始查找,這樣可提高查找速度。

(6) 根據算法7,由MProgram表中記錄修改list1列表對象。

(7) 將list1列表對象寫入一個新文件m256c6.abl,然后,關閉該文件。

算法7根據MProgram表中記錄修改list1列表對象的算法

(1) 從MProgram表中讀取所有記錄,假設有n條記錄。

(2) 令i=1。

(3) 根據記錄i的Nadr字段值,在list1列表對象中找到NADR7-NADR0邏輯表達式所在的行并進行修改。

(4) 根據記錄i的Cmd字段值,在list1列表對象中找到CI3-CI0邏輯表達式所在的行并進行修改。

(5) 根據記錄i的SCC字段值,在list1列表對象中找到SCC3-SCC0邏輯表達式所在的行并進行修改。

(6) 根據記錄i的MRW字段值,在list1列表對象中找到!_MIO00、REQ00、_WE00邏輯表達式所在的行并進行修改。

(7) 根據記錄i的I2-I0字段值,在list1列表對象中找到I200、I100、!I000邏輯表達式所在的行并進行修改。

(8) 根據記錄i的I5-I3字段值,在list1列表對象中找到I500、I400、I300邏輯表達式所在的行并進行修改。

(9) 根據記錄i的I8-I6字段值,在list1列表對象中找到I800、I700、!I600邏輯表達式所在的行并進行修改。

(10) 根據記錄i的SST字段值,在list1列表對象中找到SST200、SST100、SST000邏輯表達式所在的行并進行修改。

(11) 根據記錄i的SSHSCI字段值,在list1列表對象中找到SSH00、SCI100、SCI000邏輯表達式所在的行并進行修改。

(12) 根據記錄i的DC2字段值,在list1列表對象中找到DC2_200、DC2_100、DC2_000邏輯表達式所在的行并進行修改。

(13) 根據記錄i的DC1字段值,在list1列表對象中找到DC1_200、DC1_100、DC1_000邏輯表達式所在的行并進行修改。

(14) 如果記錄i的Bp字段值為“DR”,則list1列表對象的B30表達式增加當前記錄的MIadr字段值;如果記錄i的Bp字段值為“SR”,則list1列表對象的B301表達式增加當前記錄的MIadr字段值;如果記錄i的Bp字段值為數字字符,則修改list1列表對象的B300、B20、B10、B00邏輯表達式的值。

(15) 如果記錄i的Ap字段值為“DR”,則list1列表對象的A301表達式增加當前記錄的MIadr字段值;如果記錄i的Ap字段值為“SR”,則list1列表對象的A30表達式增加當前記錄的MIadr字段值;如果記錄i的Ap字段值為數字字符,則修改list1列表對象的A300、A20、A10、A00邏輯表達式的值。

(16)i=i+1,若i≤n,則轉到步驟(3),否則,結束。

2 實 驗

按照上述方法在Access 2010中設計好數據庫表后,為了方便Python語言編程,使用SQLite Expert工具將Access數據庫轉換成SQLite數據庫。

用Python語言編寫兩個程序,程序1能夠自動將AsblProgram表中的匯編程序轉換成微程序并寫入MProgram表、CC表和ISEA表;程序2能根據MPFAdr表和程序1生成的MProgram、CC表中的內容自動修改微程序控制器源程序文件,根據MPFAdr表在控制器源程序中自動添加擴展指令的操作碼與匯編語句的關系表達式以及自動添加擴展指令的微程序入口地址,根據CC表在控制器源程序中CC信號的邏輯表達式中自動添加擴展指令的條件微指令轉移所依據的判斷條件,根據MProgram表在控制器源程序中16位下地址字段與32位控制信號的邏輯表達式中自動添加相應的微指令地址。先后運行這兩個程序后,會自動生成一個名為m256c6.abl的包括了FMUL指令的控制器源程序文件。

將能夠自動把AsblProgram表中的匯編程序轉換成微程序并寫入MProgram表、CC表和ISEA表的程序1運行50次,結果如圖4所示,最快只需1.8 s,平均需要1.945 s;將能根據MPFAdr表和程序1生成的MProgram、CC表中的內容自動修改微程序控制器源程序文件的程序2運行50次,結果如圖5所示,最快只需0.67 s,平均需要0.71 s。

圖4 由AsblProgram表自動生成MProgram表的時間

圖5 由MProgram表、CC表等自動產生abl文件的時間

在TEC-XP16教學機微程序控制器中擴展FMUL指令的完整過程如下:

(1) 在Access 2010數據庫中創建AsblProgram匯編程序表、MProgram微程序表、CC微指令轉移判斷條件表、MPFAdr微程序入口地址表和匯編指令微指令地址表ISEA,并且在AsblProgram表輸入實現32位浮點乘法指令FUML的100條匯編指令,在MPFAdr表中輸入FMUL指令對應的微程序入口地址0011 1100。

(2) 使用SQLite Expert工具將Access數據庫轉換成SQLite數據庫。

(3) 用Python語言編寫程序1,該程序能從SQLite數據庫自動讀取AsblProgram表中的匯編指令并自動生成微程序、微指令轉移條件、每條匯編指令的微指令起始地址并分別寫入MProgram表、CC表和ISEA表。

(4) 用Python語言編寫程序2,該程序能從SQLite3數據庫自動讀取并根據MProgram表、CC表和MPFAdr表中的內容自動修改m256c.abl文件并生成一個新的微程序控制器源程序文件。

(5) 先后運行程序1和程序2,會自動生成一個名為m256c6.abl的實現了FMUL指令的控制器源程序文件。

(6) 將m256c6.abl文件重命名為m256c.abl。

(7) 啟動Lattice ispLEVER Classic Project Navigator軟件,新建一個名為lc4256的項目文件,將m256c.abl添加到項目中,然后,將m256c.abl編譯后生成名為lc4256.jed的文件,將lc4256.jed下載到教學機MACH芯片中。方法詳見文獻[11]。

(8) 啟動WinPcec16軟件,然后啟動教學機監控程序。

(9) 在WinPcec16軟件中編寫一個實現2個32位浮點數乘法的教學機程序,如圖6-圖7所示,教學機中規定擴展指令必須用E命令寫入教學機內存,FMUL指令的二進制代碼為EC00(十六進制形式),EC為FMUL指令的操作碼,被乘數存放在R1、R0寄存器中,乘數存放在R3、R2寄存器中,乘積保存在R1、R0寄存器中。

圖6中,被乘數和乘數都是0100 0000 0000 0000 0000 0000 0000 0000,即1.0×21,乘積為0100 0000 1000 0000 0000 0000 0000 0000,即1.0×22,程序運行結果驗證了本文所設計和實現的32位浮點乘法指令的功能是正確的。

圖7中,被乘數和乘數都是0100 0000 0001 0000 0000 0000 0000 0000,即1.001×21,乘積為0100 0000 1010 0010 0000 0000 0000 0000,即1.010 001×22,程序運行結果驗證了本文所設計和實現的32位浮點乘法指令的功能是正確的。

3 結 語

目前國內外還沒有研究在TEC-XP16教學機的微程序控制器中擴展較復雜指令,如32位浮點數乘法指令的文獻。本文對TEC-XP16 教學機微程序控制器中擴展32位浮點數乘法指令進行了嘗試,設計一種32位IEEE 754浮點數乘法指令,測試結果表明,采用本文方法在TEC-XP16教學機上設計的32位浮點數乘法指令的功能是正確的。

為解決原來采用人工方式將TEC-XP16教學機匯編程序轉換成微程序速度慢、效率低且容易出錯等問題,設計匯編程序表和微程序表,并設計一個Python程序,能夠根據匯編程序直接自動生成微程序。同時,為解決手工修改控制器源程序速度慢及容易出錯等問題,提出一種能夠根據微程序自動修改微程序控制器源程序的方法。實驗結果表明,所設計的32位浮點乘法指令的功能是正確的,平均只需要1.9 s就能根據匯編程序表自動生成微程序表,平均只需0.7 s就能根據微程序表、微指令轉移判斷條件表和微程序入口地址表自動修改并生成控制器ABEL語言源程序,極大提高了32位浮點乘法指令的設計速度。本文方法也可推廣到其他復雜指令的設計上。

下一步將嘗試在TEC-XP16教學機微程序控制器中設計32位浮點數除法指令等復雜指令,以及進一步研究在TEC-XP16教學機組合邏輯控制器中設計復雜指令的方法。

猜你喜歡
指令設計
聽我指令:大催眠術
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
殺毒軟件中指令虛擬機的脆弱性分析
電信科學(2016年10期)2016-11-23 05:11:56
一種基于滑窗的余度指令判別算法
主站蜘蛛池模板: 久久人与动人物A级毛片| 国产一级毛片在线| 国产精品所毛片视频| 日韩欧美中文| 伊人成人在线| 日本久久久久久免费网络| 91小视频版在线观看www| 国产福利一区视频| 欧美国产日韩在线播放| 亚洲一区二区黄色| 久久不卡国产精品无码| 熟妇人妻无乱码中文字幕真矢织江 | 中国特黄美女一级视频| 午夜三级在线| 国产一区二区影院| 亚洲精品国产日韩无码AV永久免费网| 久久久精品无码一区二区三区| 亚洲热线99精品视频| 福利片91| 亚洲性影院| 无码国内精品人妻少妇蜜桃视频| 国产永久在线视频| 尤物在线观看乱码| 国产va在线观看| av无码一区二区三区在线| 99这里只有精品免费视频| 波多野结衣一区二区三区四区视频 | 无码乱人伦一区二区亚洲一| 91在线播放免费不卡无毒| 美女视频黄又黄又免费高清| 亚洲欧美一区二区三区图片| 亚洲色欲色欲www网| 国产精品福利社| 亚洲大尺码专区影院| 四虎永久免费地址| 亚洲国产午夜精华无码福利| 亚洲欧美在线精品一区二区| 亚洲日韩AV无码精品| 欧美 亚洲 日韩 国产| 亚洲水蜜桃久久综合网站| 婷婷综合在线观看丁香| 国产特一级毛片| 色综合热无码热国产| 中文字幕 91| 国产手机在线小视频免费观看| 精品国产成人a在线观看| 青青青草国产| 国产伦片中文免费观看| 国产精品久久久久久影院| 成人亚洲视频| 国产亚洲欧美日本一二三本道| 国产av色站网站| 久996视频精品免费观看| 成人av专区精品无码国产| 亚洲国产精品VA在线看黑人| 九九这里只有精品视频| 免费看一级毛片波多结衣| 久久久久亚洲精品成人网 | 无码免费试看| 色综合综合网| 亚洲成年人网| 91精品亚洲| 97国产在线播放| 久久婷婷国产综合尤物精品| 人妻免费无码不卡视频| 国产69精品久久久久孕妇大杂乱| 日韩国产精品无码一区二区三区| 亚州AV秘 一区二区三区| 婷婷中文在线| 午夜三级在线| 熟妇无码人妻| 亚洲激情区| 国产亚洲欧美在线中文bt天堂| 福利一区三区| 51国产偷自视频区视频手机观看 | 成年女人a毛片免费视频| 欧美黑人欧美精品刺激| 亚洲天堂自拍| 欧美成人精品在线| 又黄又爽视频好爽视频| AV无码一区二区三区四区| 国产在线八区|