<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > SPARC高性能處理器集成開(kāi)發(fā)環(huán)境及其編譯器設計與實(shí)現

SPARC高性能處理器集成開(kāi)發(fā)環(huán)境及其編譯器設計與實(shí)現

——
作者: 時(shí)間:2010-10-21 來(lái)源:電子產(chǎn)品世界 收藏

  3、BMSPARC

本文引用地址:http://dyxdggzs.com/article/113735.htm

  3.1 工作原理

  BMSPARC是基于GNU工具鏈并進(jìn)行優(yōu)化設計的一款套件。GNU工具鏈一般由下面一些工具組成:編譯器GCC(GCC本身作為編譯器集合包含了對多種語(yǔ)言的支持,這里僅討論C編譯器);Binutils軟件包中作為匯編器的GAS,作為鏈接器和定址器的LD以及對二進(jìn)制目標文件進(jìn)行變化處理的其他工具;作為標準C庫的Newlib或Glibc;作為調試器的GDB。[4] [5]

  其中編譯器是將一種語(yǔ)言編譯成為另一種語(yǔ)言的計算機程序,該程序以源語(yǔ)言編寫(xiě)的程序作為輸入,翻譯生成等價(jià)的目標語(yǔ)言程序。編譯器可分成只依賴(lài)于源語(yǔ)言的編譯器前端和只依賴(lài)于目標語(yǔ)言的編譯器后端兩大部分。前端主要對源代碼進(jìn)行掃描、語(yǔ)法分析和語(yǔ)義分析,生成中間代碼;而后端主要是優(yōu)化器和代碼生成器。

  3.2 BMSPARC編譯器生成

  在進(jìn)行基于SPARC高性能處理器的嵌入式軟件系統開(kāi)發(fā)之前,要先建立交叉編譯環(huán)境。目標機的交叉編譯環(huán)境是一個(gè)由編譯器、鏈接器和解釋器組成的綜合開(kāi)發(fā)環(huán)境,主要由 binutils、gcc 和 glibc 幾個(gè)部分組成。有時(shí)出于減小 libc 庫大小的考慮,也可以用別的 c 庫來(lái)代替 glibc,例如 uClibc、dietlibc 和 newlib。建立一個(gè)交叉編譯工具鏈是一個(gè)復雜的過(guò)程,交叉編譯器的最終成功運行,取決于很多因素,包括:主機系統配置、GNU工具版本配合、參數配置、庫選擇等,一個(gè)成功的、穩定的交叉編譯環(huán)境是需要花費大量額時(shí)間的,幸運的是現在針對很多處理器都有比較成熟何穩定的編譯配置,這里簡(jiǎn)單列出本系統的交叉編譯環(huán)境的主要配置:

  • 宿主機 i386-cygwin,目標機 sparc;
  • 編譯環(huán)境版本

  1. binutils-2.13.2.1

  2. gcc-3.4.4

  3. gdb-6.3

  4. newlib-1.13.0

  在交叉編譯器編譯的基本配置如下所示:

  ../gcc-3.4.4/configure --target=sparc-elf --prefix= /opt/sparc-elf-3.4.4

  --with-gnu-as --with-gnu-ld

  --verbose --enable-languages=c,c++ --disable-shared --disable-nls

  --with-newlib --with-cpu=leon 2>&1 | tee compile-gcc-configure.out

  交叉編譯環(huán)境建立過(guò)程如下:

  1. 下載源文件、補丁和建立編譯的目錄

  2. 建立內核頭文件

  3. 建立二進(jìn)制工具(binutils)

  4. 建立初始編譯器(bootstrap gcc)

  5. 建立c庫(glibc)

  6. 建立全套編譯器(full gcc)

  7. 下載源文件、補丁和建立編譯的目錄

  生成的工具鏈是基于ELF格式的,全部在/opt/sparc-elf-3.4.4(這是cygwin的目錄)路徑下,完全作為的配套工具鏈。

  3.3 CORDIC指令支持

  BMSPARC還提供對硬件CORDIC的支持。CORDIC算法使用矢量的旋轉和定向運算進(jìn)行三角函數、對數、開(kāi)方及反三角函數等復雜運算。該算法的基本思想是通過(guò)一系列固定的與運算基數相關(guān)的角度的不斷偏擺以逼近所需的旋轉角度,由于其基本運算單元只有移位與加減法,為該算法的VLSI實(shí)現打下了良好的基礎。

  下表列出了BMSPARC支持的協(xié)處理器指令及其對應的指令操作碼,是對SPARC v8標準指令集中浮點(diǎn)協(xié)處指令操作碼的擴充。

  BMSPARC編譯器提供對指令的支持,主要通過(guò)庫函數修改的方式完成。首先在binutils中修改匯編器gas,主要針對匯編器的前端和BFD庫的移植,涉及到的文件包括:tc-sparc.c、tc-sparc.h、sparc.h、sparc-opc.c、sparc-dis.c和elf32- sparc.h等。通過(guò)定義相應指令的宏來(lái)完成匯編級的指令生成,之后要完成newlib中超越函數相關(guān)的數學(xué)函數庫,利用匯編指令實(shí)現函數的功能,并在匯編中使用cordic指令完成的超越函數功能。最后定義頂層數據類(lèi)型,針對不同的數據類(lèi)型,如針對單精度和雙精度的浮點(diǎn),實(shí)現其三角函數的數學(xué)庫是不同的,要分別針對其不同的類(lèi)型進(jìn)行實(shí)現。

c語(yǔ)言相關(guān)文章:c語(yǔ)言教程




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>