<form id="itnzz"><noscript id="itnzz"></noscript></form>

          1. <menuitem id="itnzz"></menuitem>
          2. 成人午夜激情在线观看,国产精品一线天粉嫩av,99精品国产综合久久久久五月天 ,一卡2卡三卡4卡免费网站,国产高清在线男人的天堂,五月天国产成人AV免费观看,67194熟妇在线观看线路,成人无码潮喷在线观看
            現在位置:范文先生網>理工論文>電子通信論文>如何在32個處理器中編輯并且翻譯64固定的點進位計算

            如何在32個處理器中編輯并且翻譯64固定的點進位計算

            時間:2023-02-21 00:04:02 電子通信論文 我要投稿
            • 相關推薦

            如何在32個處理器中編輯并且翻譯64固定的點進位計算

            摘要:介紹嵌式32位CPU在編譯器中解決64位運算的方法,并列舉一個加法運算的例子,給出可供參考的指令模板。包括32位RISC體系嵌入式CPU層次結構和編譯器后端結構。

                關鍵詞:RTL 指令模板 編譯優化

            如何在32個處理器中編輯并且翻譯64固定的點進位計算

            1 概述

            在信息化飛速發展的今天,計算機已成為人們學習和工作不可缺少的工具,我國業已取得了電腦生產大國的地位;但是,作為計算機的核心——CPU的設計與制造,卻成了幾代計算機工作者的未了習愿,也給國家的安全帶來了隱憂。順應潮流,中芯微系統公司于2001年推出了國內第一顆實用化的32位CPU(方舟一號),主頻達到166MHz。下一代方舟CPU將采用0.18μm工藝,超流水結構,主頻能達到600MHz以上,在嵌入式CPU領域走到國際前列。

            傳統的32位計算機處理64位運算通常是設計具體的邏輯電路實現。隨著SoC(System on Chip)的出現,芯片上集成各種功能部件越來越多,特別對于嵌入式系統,片上能利用的空間就列加有限,這也要求將部分功能用軟件來實現。對于64位長字運算軟件實現的方法通常有兩種:一是設計系統軟件供操作系統內核調用;二是在相關的編譯器中設計指令模板來解決。前者執行效率高,但每使用一次就要編譯一次;后者只需編譯一次,總的效率要高于前者。因此,實際采用在編譯器中設計指令模板予以解決。

            2 32位RISC體系嵌入式CPU層次結構描述

            圖1是一個集成了DSP(數字信號處理器)嵌入式CPU的層次圖。(范文先生網www.ycxgx.cn收集整理)從圖1可看到,編譯器在整個CPU結構中處于ASIC硬件電路之下和操作系統之上,擔負著將高級的、抽象的表達式轉化為相對低級的表達式,最終生成系統指令集。

            3 CPU編譯器后端結構

            CPU編譯器分為前端和后端:前端主要完成詞法/語法分析并生成語法樹,這里不再論述;后端是編譯的主體部分,它將語法樹轉換成不間語言,在此不間語言基礎上進行各種編譯優化,最終生成匯編指令代碼。編譯后端在進行優化的過程中要跟具體的目標機的機器描述文件多次匹配,生成RTL語言(Register Transfer Language)—GNU CC的中間語言。

            機器描述文件由各種與目標機有關的指令模板、功能模板、C語言形式的預處理函數等構成。本文涉及到的64位運算就是由RTL和指令模板多次匹配后生成匯編指令來解決的,過程如圖2所示。

            限于篇幅,這里僅舉64位加法運算的部分例子,其它運算與此類似。

            4 64位加法運算指令板

            ① RTL識別指令模板,第一次匹配。

            (define_insn “adddi3”)

            [(set(match_operand:DI 0 "register_operand" "=r")

            (plus:DI (match_operand:DI 1“register_operand”“0”)

            (match_operand:DI 2 "register_operand"“r”)))

            (clobber(reg:SI 6))]//6號寄存器作進位使用

            "")

            ② 將64位加法分解成高32位和低32位運算,第二次匹配。

            (define_split

            [(set(match_operand:DI 0 "register_operand"“=r”)

            (plus:DI (match_operand:DI 1“register_operand”“0”)

            (match_operand:DI 2 “register_operand”“r”)))

            (clobber(reg:SI 6))]

            "reload_complete"

            “{

            [(const_int 0)] //寄存器使用前清零

            rtx low[3],high[3]; //rtx為一種處理表達式的數據類型

            low[0]=gen_lowpart(Simode,operands[0]

            );

            low[1]=gen_lowpart(Simode,operands[1]);

            low[2]=gen_lowpart(Simode,operands[2]);

            high[0]=gen_rtx(REG,Simode,REGNO(operands[0]-1);

            high[1]=gen_rtx(REG,Simode,REGNO(operands[1]-1);

            high[2]=gen_rtx(REG,Simode,REGNO(operands[2]-1);

            //由于方舟CPU地址存儲方式采用的是Big-Endian,即字節中的最高有效位具有最低序號,所以高位硬寄存器號要減1。

            emit_insn(gen_addsi3_set_carry(low[0],low[1],low[2])) //低32位加并設置進位

            emit_insn(gen_addsi3_use_carry(high[0],high[1],high[2])); //高32位加并處理進位

            DONE;

            }

            ③ 處理低32位加。

            (define_insn "addsi_set_carry"

            [(set(match_operand:SI 0 (match_operand:SI1 "register_operand" "r")

            (match_operand:SI 2

            "register_operand"“r”))) (clobber(reg:SI6))] //以下判斷是否有進位。有,則6號寄存器置1(set(reg:SI6)

            (itu:SI(plus:SI(match_dup 1)match_dup 2))(match_dup 1)))]

            ""

            "add\t%0,%1,%2" //生成低32位匯編模板

            ④處理高32位加。

            (define_insn "addi3_use_carry"

            (define_insn "adddi3_use_carry"

            [(set(match_operand:SI 0 "register_operand"“=r”)

            (plus:SI(plus:SI(match_operand:SI 1 "register_operand" "r"))

            (reg:SI 6)))

            (clobber(reg:SI 6))]

            “”

            "add%0,%1,%2;add\t%0,%0,r6" //生成高32位帶進位加匯編模板

            )

            在機器描述文件中,DI為64位機器方式,SI為32位方式。該文件由機器描述處理程序進行格式轉換,它將調用編譯內部一套專門的函數和數據結構作為接口,生成gen_開頭的預處理函數對指令模板作進一步的處理,再生成由insn_開頭的函數對模板作匹配后生成匯編代碼。

            結語

            在方舟二號CPU上測試的結果達到了64運算的要求,相關的指令代碼如下:

            ……

            132 r18,[r15,4]

            132 r19,[r15,8]

            add r16,r16,r18

            add r17,r17,r19

            add r17,r17,r6

            ……

            用SPEC95進行定點運算測試,可達280MIPS以上,收到了較好的預期結果。


            【如何在32個處理器中編輯并且翻譯64固定的點進位計算】相關文章:

            如何在面試中化險為夷08-17

            如何在早期教育中恰當使用計算機08-22

            如何在小組面試中“出彩”08-15

            如何在簡歷中彌補弱項08-15

            數字信號處理器中D/A功能的實現08-06

            淺談如何在計算機教學中培養學生的非智力因素08-17

            如何在化學中滲透環保教育08-24

            如何在面試中脫穎而出08-16

            ADSP系列處理器在網絡多媒體中的應用08-06

            主站蜘蛛池模板: 深夜福利资源在线观看| 成人综合网亚洲伊人| 亚洲乱女色熟一区二区三区| 国产成人亚洲综合色婷婷秒播| 欧美在线一区二区三区精品| 亚洲成年轻人电影网站WWW| 欧美日韩综合在线精品| 国产一区二区波多野结衣| 国产精品无码专区在线观看不卡 | 麻豆国产传媒精品视频| 国产成人国产在线观看| 亚洲色大成网站WWW久久| 亚洲精品揄拍自拍首页一| 国产中文一区卡二区不卡| 总裁与秘书啪啪日常h| 国产特色一区二区三区视频| 无套内谢少妇毛片aaaa片免费 | 人妻少妇久久精品一区二区| 国产精品日日摸夜夜添夜夜添无码| 2021中文字幕亚洲精品 | 亚洲欧洲日韩精品在线| 欧美一区二区三区香蕉视| 久久精品不卡一区二区| 亚洲毛片αv无线播放一区| 亚洲精品色哟哟一区二区| 狠狠色噜噜狠狠狠狠色综合久| 美日韩精品一区三区二区| 7777精品伊久久久大香线蕉| 人妻中文字幕一区二区视频| 国产高清精品在线91| 亚洲天堂网色图伦理经典| 亚洲第一福利网站在线观看| 亚在线观看免费视频入口| 女人与公狍交酡女免费| 久久精品波多野结衣| 黄色网站免费在线观看| 激情综合网激情综合| 亚洲精品久久久久久下一站| 欧美老少配性行为| 樱花草视频www日本韩国| 国精产品自偷自偷ym使用方法 |