ARM RVDS 4.1中的Arm編譯器是一個(gè)與ARM編譯器聯(lián)合開(kāi)發(fā)的商用編譯器,專門(mén)設(shè)計(jì)用于為 ARM 編譯器架構(gòu)程序并提供支持。該編譯器的開(kāi)發(fā)歷經(jīng)有20年左右,被公認(rèn)為是業(yè)界標(biāo)準(zhǔn) C 和 C++ 編譯器,用于生成面向 Arm、Thumb、Thumb-2、VFP 和 NEON 指令集的應(yīng)用程序。
Arm編譯器設(shè)計(jì)用于執(zhí)行ARM編譯器生成的代碼。
Arm編譯器支持所有ARM處理器中的新增器功能。
基于分析驅(qū)動(dòng)的編譯器將自動(dòng)在運(yùn)行時(shí)優(yōu)化代碼并提供信息。
Arm編譯器支持生成 Symbian OS 和 ARM Linux 應(yīng)用程序及庫(kù),RVDS 4.1 編譯器與 RVDS 4.0 相比,最佳代碼大小減少了多達(dá) 6%,并使性能提高了 10-20%。
除了 ARM編譯器之外,先進(jìn)的 NEON 矢量化 ARM編譯器(RVDS 專業(yè)版的一部分)支持從標(biāo)準(zhǔn)的 C 和 C++ 代碼自動(dòng)生成 ARM NEON SIMD 代碼序列。NEON 矢量化ARM編譯器可使關(guān)鍵多媒體內(nèi)核的速度提高 4 倍,最終使整個(gè)應(yīng)用程序性能提高到2 倍。
為進(jìn)一步提高基于 Arm編譯器的一系列應(yīng)用程序的代碼密度,ARM編譯器特別提供了一個(gè)可選的 microlib C 庫(kù)(ISO 標(biāo)準(zhǔn) C 運(yùn)行時(shí)庫(kù)的子集),該庫(kù)的大小已針對(duì)微控制器應(yīng)用進(jìn)行了最小化。microlib C 庫(kù)的運(yùn)行時(shí)庫(kù)代碼大小縮減了 90%。
Cortex-M 與 ARM編譯器結(jié)合使用時(shí),microlib C 庫(kù)提供完全基于 C 語(yǔ)言的開(kāi)發(fā)環(huán)境,而不必還原為匯編語(yǔ)言 - 即便對(duì)中斷服務(wù)例程也是如此。這樣就無(wú)需具體了解 ARM編譯器架構(gòu)。
microlib C 庫(kù)所節(jié)省的內(nèi)存空間將取決于應(yīng)用程序,“hello world”應(yīng)用程序可節(jié)省 97%,Dhrystone 之類的較為復(fù)雜的應(yīng)用程序可節(jié)省到 50%。
降低 Linux 應(yīng)用程序開(kāi)發(fā)的風(fēng)險(xiǎn):
ARM編譯器團(tuán)隊(duì)所創(chuàng)建的針對(duì) ARM架構(gòu)的 ABI 同樣可在 ARM GNU 編譯器中實(shí)現(xiàn)。這樣,即可支持創(chuàng)建和使用可在不同開(kāi)發(fā)環(huán)境間共享的庫(kù)。
GNU 編譯器與 ARM編譯器相互兼容意味著可以使用 ARM 編譯器生成 Linux 應(yīng)用程序。ARM 編譯器能為您的開(kāi)發(fā)團(tuán)隊(duì)提供高質(zhì)量的商用工具包可提供的卓越的支持和性能、穩(wěn)定性和代碼大小優(yōu)勢(shì)。
精確的代碼生成:
現(xiàn)今的許多算法都是使用浮點(diǎn)數(shù)據(jù)表示法從數(shù)學(xué)建模軟件自動(dòng)生成的。因此,IEEE 位表示和浮點(diǎn)表示的精度對(duì)于生成的代碼能否正確運(yùn)算至關(guān)重要。ARM編譯器選擇的默認(rèn)庫(kù)提供完整的 C/C++ 功能,包括 C++ 異常處理和 IEEE 754 浮點(diǎn)支持。該編譯器可選擇性地生成代碼以使用軟件浮點(diǎn)或任何 ARM編譯器硬件浮點(diǎn)單元。不論使用哪種方法,該 ARM編譯器均可生成符合 IEEE 754 標(biāo)準(zhǔn)的完整代碼。這意味著您的應(yīng)用程序?qū)⑸赏耆嗤臄?shù)據(jù),而不論采用哪種目標(biāo)處理器,從而加快了從某一設(shè)備到其他設(shè)備的移植。
面向高等數(shù)學(xué)和 DSP 樣式的解決方案。
內(nèi)部函數(shù)提供針對(duì)未能很好地映射到高級(jí)語(yǔ)言的公用代碼序列或指令的支持。
ETSI 內(nèi)部函數(shù)提供用在若干示例算法中的電信基元。
TI C55 內(nèi)部函數(shù)支持為利用特定于 TI 的擴(kuò)展而編寫(xiě)的算法。
Cortex-M4 內(nèi)部函數(shù)用于面向板載 DSP。
其他內(nèi)部函數(shù)允許訪問(wèn)從 C 語(yǔ)言不易訪問(wèn)的所有 ARM 硬件指令,降低了以匯編語(yǔ)言編寫(xiě)代碼的需要。
盡可能在早期 ARM編譯器上模擬內(nèi)部函數(shù)。