最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言對(duì)于volatile與gcc優(yōu)化的探究

 更新時(shí)間:2023年02月03日 15:07:42   作者:水火汪  
這篇文章主要介紹了C語(yǔ)言對(duì)于volatile與gcc優(yōu)化的探究,volatile是一個(gè)特征修飾符(type specifier) volatile的作用是作為指令關(guān)鍵字,確保本條指令不會(huì)因編譯器的優(yōu)化而省略,且要求每次直接讀值。這是百度百科的介紹,那編譯器是具體是怎么優(yōu)化的呢

volatile是一個(gè)特征修飾符(type specifier) volatile的作用是作為指令關(guān)鍵字,確保本條指令不會(huì)因編譯器的優(yōu)化而省略,且要求每次直接讀值。這是百度百科的介紹,那編譯器是具體是怎么優(yōu)化的呢。

我們知道gcc 是有O0 O1 O2 O3的優(yōu)化等級(jí)的,其中O0優(yōu)化最低,O3優(yōu)化最高。

現(xiàn)在看下下面一段簡(jiǎn)單程序:

#include <stdio.h>
void task_delay(int count)
{
           count *= 50000;
           while(count--);
}
int main(int argc,char* argv[])
{
   printf("Task 0:Created!\n");
   printf("Task 0:Running ...\n");
   task_delay(1000);
    return 0;
}

不用優(yōu)化編譯下:

gcc -g  -O0 main.c

看下反匯編代碼:

objdump -d a.out

看的出來(lái)最低等級(jí)的優(yōu)化-O0 的執(zhí)行程序task_delay函數(shù)的匯編指令非常多,性能損耗長(zhǎng)。

現(xiàn)在看下O1的優(yōu)化后效果:

xc@xc-virtual-machine:~$ gcc -g  -O1 main.c
xc@xc-virtual-machine:~$ objdump -d a.out

反匯編代碼:

明顯task_delay匯編指令比之前-O0優(yōu)化的時(shí)候要少,提升了執(zhí)行速度?,F(xiàn)在在來(lái)看下-O3的優(yōu)化后的反匯編代碼

看的出是直接空指令返回的,且運(yùn)行地址在1180在main函數(shù)是沒(méi)調(diào)用,這個(gè)暫時(shí)不知道怎么回事,交給后面的自己了,哈哈。

好了上面都是準(zhǔn)備工作,目的是告訴我們-O3能將程序優(yōu)化極致?,F(xiàn)在我們將count入?yún)⒂胿olatile修飾,會(huì)怎樣,根據(jù)百度百科的說(shuō)法是不會(huì)進(jìn)行優(yōu)化的,我們測(cè)試下:

#include <stdio.h>
void task_delay(volatile int count)
{
           count *= 50000;
           while(count--);
}
int main(int argc,char* argv[])
{
   printf("Task 0:Created!\n");
   printf("Task 0:Running ...\n");
   task_delay(1000);
    return 0;
}

xc@xc-virtual-machine:~$ gcc -g  -O3 main.c
xc@xc-virtual-machine:~$ 
xc@xc-virtual-machine:~$ 
xc@xc-virtual-machine:~$ objdump -d a.out  

發(fā)現(xiàn)跟-O0的匯編代碼一樣,沒(méi)進(jìn)行優(yōu)化。

到此這篇關(guān)于C語(yǔ)言對(duì)于volatile與gcc優(yōu)化的探究的文章就介紹到這了,更多相關(guān)C語(yǔ)言volatile與gcc內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++的static靜態(tài)成員你有了解嗎

    C++的static靜態(tài)成員你有了解嗎

    這篇文章主要為大家詳細(xì)介紹了C++的static靜態(tài)成員,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • C++中string使用+號(hào)與int拼接方式

    C++中string使用+號(hào)與int拼接方式

    這篇文章主要介紹了C++中string使用+號(hào)與int拼接方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C++移動(dòng)語(yǔ)義介紹與使用講解

    C++移動(dòng)語(yǔ)義介紹與使用講解

    首先,移動(dòng)語(yǔ)義和完美轉(zhuǎn)發(fā)這兩個(gè)概念是在C++的模板編程的基礎(chǔ)上,新增的特性,主要是配合模板來(lái)使用。本篇會(huì)從C++的值類型,到移動(dòng)拷貝與移動(dòng)賦值來(lái)理解移動(dòng)語(yǔ)義與完美轉(zhuǎn)發(fā)
    2022-09-09
  • C++ 讀寫文件安全又簡(jiǎn)潔的簡(jiǎn)單實(shí)例

    C++ 讀寫文件安全又簡(jiǎn)潔的簡(jiǎn)單實(shí)例

    這篇文章主要介紹了C++ 讀寫文件安全又簡(jiǎn)潔的簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • wince程序防止創(chuàng)建多個(gè)實(shí)例實(shí)現(xiàn)互斥作用

    wince程序防止創(chuàng)建多個(gè)實(shí)例實(shí)現(xiàn)互斥作用

    什么時(shí)候用的互斥?當(dāng)你的程序只允許同時(shí)打開一個(gè)的時(shí)候,就可以通過(guò)互斥來(lái)實(shí)現(xiàn),下面說(shuō)的互斥,主要是針對(duì)防止程序創(chuàng)建多個(gè)實(shí)例這種情況來(lái)實(shí)現(xiàn)的
    2014-02-02
  • 淺談c++中的while(cin)問(wèn)題

    淺談c++中的while(cin)問(wèn)題

    下面小編就為大家?guī)?lái)一篇淺談c++中的while(cin)問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • C++實(shí)現(xiàn)并行計(jì)算的兩種方式

    C++實(shí)現(xiàn)并行計(jì)算的兩種方式

    本文介紹了使用C++實(shí)現(xiàn)并行計(jì)算的兩種方式,包括OpenMP和MPI,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • C++變換迭代器使用方法小結(jié)

    C++變換迭代器使用方法小結(jié)

    本文主要介紹了C++變換迭代器使用方法小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • C 語(yǔ)言中strstr函數(shù)實(shí)例詳解

    C 語(yǔ)言中strstr函數(shù)實(shí)例詳解

    這篇文章主要介紹了C 語(yǔ)言中strstr函數(shù)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • 一起聊聊C++中的四種類型轉(zhuǎn)換符

    一起聊聊C++中的四種類型轉(zhuǎn)換符

    這篇文章主要是想喝大家一起聊聊來(lái)C++中的四種類型轉(zhuǎn)換符?:const_cast、reinterpret_cast、dynamic_cast和static_cast,感興趣的可以了解一下
    2022-07-07

最新評(píng)論

革吉县| 临海市| 定远县| 南京市| 张家界市| 安阳县| 镇宁| 淮南市| 聂拉木县| 呼玛县| 扎囊县| 四平市| 罗山县| 陆河县| 衡南县| 南丰县| 白山市| 潮州市| 阜平县| 宁陵县| 旬邑县| 南川市| 冷水江市| 江陵县| 南阳市| 黄浦区| 梁山县| 兴安县| 垦利县| 恭城| 甘谷县| 乌恰县| 兴海县| 临高县| 合山市| 邻水| 闽侯县| 岳池县| 道真| 上杭县| 五莲县|