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