請閱讀【ARM GCC 編譯專欄導(dǎo)讀】
上篇文章:ARM 嵌入式 編譯系列 4.2 – GCC 鏈接規(guī)范 extern “C“ 介紹
下篇文章:ARM 嵌入式 編譯系列 6 – GCC objcopy, objdump, readelf, nm 介紹
什么是GCC內(nèi)建函數(shù)?
GCC提供了一些專門的功能,用于訪問特定的硬件指令或者實現(xiàn)特定的優(yōu)化,它們被稱為"__builtin
"函數(shù)。
這些函數(shù)在語法上看起來像是普通函數(shù),但在編譯階段會被編譯器直接轉(zhuǎn)換為一些特定的機器指令,而不是像普通函數(shù)那樣調(diào)用通用的函數(shù)調(diào)用協(xié)議。
GCC提供的__builtin
函數(shù)非常多,包括了數(shù)學(xué)函數(shù)、字符串操作、內(nèi)存操作、位操作、類型轉(zhuǎn)換、計數(shù)前導(dǎo)零/尾零、CPU指定指令等等功能。
使用__builtin
函數(shù)可以在不犧牲可讀性的同時獲得更高的性能。但是請注意,由于這些函數(shù)直接對應(yīng)特定的硬件指令,所以在不同的硬件和操作系統(tǒng)上,它們的效果和性能可能會有所不同。因此,在編寫依賴于__builtin
函數(shù)的代碼時,需要特別注意移植性的問題。
要在GCC中使用__builtin
函數(shù),只需要在代碼中直接調(diào)用即可,無需包含任何頭文件。
GCC 常見內(nèi)建函數(shù)
GCC編譯器提供了很多內(nèi)建函數(shù),這些函數(shù)可以幫助我們進行一些特殊的操作,以下是一些常見的GCC內(nèi)建函數(shù):文章來源:http://www.zghlxwxcb.cn/news/detail-644134.html
-
__builtin_expect
:提供編譯器關(guān)于一個條件判斷表達式結(jié)果的預(yù)期值,用于優(yōu)化代碼, 見likely
與unlikely
的實現(xiàn);文章來源地址http://www.zghlxwxcb.cn/news/detail-644134.html
到了這里,關(guān)于【ARM 嵌入式 編譯系列 5 -- GCC 內(nèi)建函數(shù) __builtin 介紹】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!