中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

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

      時間:2024-07-27 01:35:27 理工畢業論文 我要投稿
      • 相關推薦

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

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

      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的層次圖。從圖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")

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

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

      編輯給論文寫作的10點建議03-26

      試論如何在中職計算機教學中培養學生的學習興趣論文12-07

      英漢翻譯中的翻譯癥03-02

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

      翻譯中的視點轉移03-18

      如何在旅游管理教學中運用案例11-18

      視頻監控系統中多畫面處理器的設計03-19

      論等效翻譯及其在漢英翻譯中的應用03-11

      研究如何在企業中應用好績效管理03-21

      主站蜘蛛池模板: 色综合久久三十路人妻蜜臀av| 男女高潮免费观看无遮挡| 久久精品国产亚洲av麻豆毛片| 2022AV一区在线| 人妻中文字幕一区二区二区| 超清中文乱码字幕在线| 丝袜美腿一区二区在线观看| 日本视频一区二区三区免费观看| 江孜县| 精品少妇一区一区三区| 在线国产视频精品视频| 美腿丝袜亚洲综合第一页| 南靖县| 宜阳县| 惠州市| 千阳县| 榕江县| 莱芜市| 高淳县| а的天堂网最新版在线| 卓资县| 彩票| 亚洲一区二区三区在线观看播放| 阿尔山市| 国产精品无码mv在线观看| 日本一区二区三区激情视频| 国内精品中文字幕一区| 国产福利美女小视频| 加勒比东京热久久综合| 日韩少妇人妻一区二区| 亚洲人成网站18男男| 男人天堂AV在线麻豆| 亚洲乱码中文字幕综合| 免费国产h视频在线观看86| 国产av一区二区3区| av网站影片在线观看| 精品无码人妻久久久一区二区三区| 国产天堂av手机在线| 国产亚洲精品日韩香蕉网| 欧美在线观看www| 岚皋县|