簡體   English   中英

GCC printf優化

[英]GCC printf optimization

我注意到GCC在優化printf非常聰明。 例如,從結果代碼中完全刪除了printf("") printf("\\n")替換為putchar('\\n')

我在編譯一個非常小的模塊時注意到:

extern "C" int printf(const char *__restrict __format, ...);

void f()
{
    printf("\n");
}

使用gcc -O2 ,對printf的調用將替換為putchar('\\n') (甚至不需要包含任何頭文件)。

生成的代碼:

f():
        mov     edi, 10
        jmp     putchar

可以執行那些優化的機制是什么? 據我所知,標准C ++沒有提供任何允許此類優化的功能。

它可以擴展為用戶功能還是在編譯器中“硬編碼”?

這也意味着如果我想用自己的實現重新定義printf ,編譯器可能會將其弄亂。 是真的嗎

使用GCC編譯時,某些函數是內置函數。 這意味着它們的實現內置於編譯器中,並且庫版本被忽略。 printf是這樣的功能之一。

看看http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM