請(qǐng)閱讀【嵌入式開發(fā)學(xué)習(xí)必備專欄 之 ARM GCC 編譯專欄】
問題背景
在移植 RT-Thread 時(shí),使用Make 進(jìn)行編譯,結(jié)果遇到了下面問題:
rtt_os/cortex-m33/context_gcc.S: Assembler messages:
rtt_os/cortex-m33/context_gcc.S:154: Error: thumb conditional instruction should be in IT block – vstmdbeq r1!,{d8-d15}' rtt_os/cortex-m33/context_gcc.S:198: Error: thumb conditional instruction should be in IT block --
vldmiaeq r1!,{d8-d15}’
make: *** [rtt_os/cortex-m33/subdir.mk:13: rtt_os/cortex-m33/context_gcc.o] Error 1
-wa,-mimplicit-it=thumb 介紹
在使用 arm-none-eabi-gcc
編譯 ARM 架構(gòu)代碼時(shí),你可能會(huì)碰到一些控制匯編器行為的編譯器選項(xiàng)。-wa
是一個(gè) GCC 編譯器選項(xiàng),用于向匯編器傳遞參數(shù)。
-wa,-mimplicit-it=thumb
實(shí)際上是一組兩個(gè)選項(xiàng),它們的作用如下:
-wa 選項(xiàng)
-wa
選項(xiàng)允許你將參數(shù)直接傳遞給匯編器。它用于告訴 gcc
后端,在調(diào)用 as
匯編器時(shí)附加額外的命令行參數(shù)。你可以使用這個(gè)選項(xiàng)添加任何標(biāo)準(zhǔn)的匯編器命令行參數(shù)。
語法如下:
gcc -c -o output.o source.c -Wa,<assembler-options>
其中 <assembler-options>
是要傳遞給 as
匯編器的選項(xiàng)列表,用逗號(hào)分隔。
-mimplicit-it=thumb 選項(xiàng)
-mimplicit-it=thumb
是傳遞給 as
匯編器的一個(gè)選項(xiàng),它和 Thumb 指令集有關(guān)。
-
-m
: 這總是as
匯編器選項(xiàng)的前綴,表示這是一個(gè)指定給匯編器的機(jī)器相關(guān)的選項(xiàng)。 -
implicit-it
: IT 指令是 ARM 架構(gòu)中的「If-Then
」指令,它用于 Thumb-2 指令集中的條件執(zhí)行。在 ARM 模式下,大多數(shù)指令都可以直接帶有條件碼進(jìn)行條件執(zhí)行,而在 Thumb 模式(特別是在更舊的架構(gòu)中),你需要顯式地使用 IT 指令來實(shí)現(xiàn)條件執(zhí)行。 -
=thumb
: 這個(gè)值告訴匯編器在必要時(shí)隱式地插入 IT 指令,以使得后面的 Thumb 指令能夠條件執(zhí)行。這是對(duì)于兼容性的考慮,特別是在混合 ARM 和 Thumb-2 代碼時(shí)有用。在 ARMv8 中,大多數(shù)形式的條件執(zhí)行都已經(jīng)被棄用,除了分支指令。
當(dāng)使用 -mimplicit-it=thumb
時(shí),你不需要在匯編代碼中顯式編寫 IT 指令,匯編器會(huì)在需要的時(shí)候自動(dòng)插入。
使用 -wa,-mimplicit-it=thumb
在命令行中組合這兩個(gè)選項(xiàng)的實(shí)例如下:文章來源:http://www.zghlxwxcb.cn/news/detail-808022.html
arm-none-eabi-gcc -c -o output.o source.c -Wa,-mimplicit-it=thumb
這條命令會(huì)編譯 source.c
文件,并將 -mimplicit-it=thumb
選項(xiàng)傳遞給匯編器,允許在生成 Thumb-2 指令時(shí)自動(dòng)插入 IT 指令。文章來源地址http://www.zghlxwxcb.cn/news/detail-808022.html
到了這里,關(guān)于【ARM 嵌入式 編譯系列 2.3 -- GCC 編譯參數(shù)學(xué)習(xí) -Wa,-mimplicit-it=thumb 使用介紹】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!