擊左上方藍色“一口Linux”,選擇“設為星標”
第一時間看干貨文章 ?【干貨】嵌入式驅動工程師學習路線 ?【干貨】Linux嵌入式知識點-思維導圖-免費獲取 ?【就業】一個可以寫到簡歷的基于Linux物聯網綜合項目 ?【就業】簡歷模版
《linux驅動、ARM學習環境搭建》
《4. 從0開始學ARM-ARM匯編指令其實很簡單》
《7. 從0學ARM-匯編偽指令、lds詳解》
《手把手教你分析C語言if架構代碼最終如何用arm匯編實現》
《c語言的循環是如何用匯編代碼來實現的?》
有一個比較古老的C語言面試題,相信很多老鐵都刷到過。
這兩種寫法的優缺點匯總如下:
優點:
優點
缺點
補充:現代編譯器(GCC/Clang)開啟-O2及以上優化時,會自動把寫法 1 優化成寫法 2,二者運行效率基本一致。 a/b
下面我們通過一個基于arm裸機開發工程的簡單實例給大家講解,這兩個不同寫法被編譯器翻譯成最終的arm匯編代碼。 測試代碼如下:
Makefile如下:
1 TARGET=gcd
2 TARGETC=main
3 all:
4 arm-linux-gnueabihf-gcc -lto -g -c -o $(TARGETC).o $(TARGETC).c
5 arm-linux-gnueabihf-gcc -lto -g -c -o $(TARGET).o $(TARGET).s
6 arm-linux-gnueabihf-gcc -lto -g -S -o $(TARGETC).s $(TARGETC).c
7 arm-linux-gnueabihf-ld $(TARGETC).o $(TARGET).o -Tmap.lds -o $(TARGET).elf
8 arm-linux-gnueabihf-objcopy -O binary -S $(TARGET).elf $(TARGET).bin
9 arm-linux-gnueabihf-objdump -D $(TARGET).elf > $(TARGET).dis
10 clean:
11 rm -rf *.o *.elf *.dis *.bin
lto (Link Time Optimization,鏈接時優化)能做的優化(對你代碼也生效)
關鍵特征

關鍵特征
完整代碼獲取,后臺回復:匯編
更多嵌入式知識,請加彭老師好友:yikoupeng
end
一口Linux
關注,回復【1024】海量Linux資料贈送
精彩文章合集
文章推薦