日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于volatile關(guān)鍵字對(duì)編譯器優(yōu)化的影響

黃工的嵌入式技術(shù)圈 ? 來(lái)源:黃工的嵌入式技術(shù)圈 ? 作者:黃工的嵌入式技術(shù) ? 2020-02-28 17:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

初學(xué)的朋友可能不怎么關(guān)心優(yōu)化選項(xiàng),但對(duì)于經(jīng)驗(yàn)豐富的工程師來(lái)說(shuō),掌握代碼優(yōu)化是必備技能。

今天講述的話(huà)題就是關(guān)于代碼優(yōu)化中,關(guān)鍵字volatile在優(yōu)化過(guò)程中起到的作用。

一、關(guān)于volatile

volatile是一個(gè)類(lèi)型修飾符(type specifier)。

volatile的作用是作為指令關(guān)鍵字,確保本條指令不會(huì)因編譯器的優(yōu)化而省略,且要求每次直接讀值。

volatile變量是說(shuō)這變量可能會(huì)被意想不到地改變,這樣,編譯器就不會(huì)去假設(shè)這個(gè)變量的值了。

---來(lái)自百度百科

volatile的定義,應(yīng)該在讀書(shū)時(shí)都看過(guò)無(wú)數(shù)遍。但我相信絕大部分人都沒(méi)有深刻理解其中含義。

但當(dāng)你真正編程,開(kāi)發(fā)項(xiàng)目之后,你就會(huì)進(jìn)一步理解其中含義。

二、volatile關(guān)鍵字對(duì)編譯器優(yōu)化的影響

我們都知道編譯器有優(yōu)化代碼的功能,我們常用的集成開(kāi)發(fā)環(huán)境(Keil、 IAR)都有優(yōu)化選項(xiàng)。

如果不使用關(guān)鍵字volatile申明變量,則編譯器可能會(huì)對(duì)變量的訪(fǎng)問(wèn)并生成非預(yù)期的代碼或刪除預(yù)期的功能。

1.何時(shí)使用volatile?

常見(jiàn)使用volatile聲明的情況:

訪(fǎng)問(wèn)內(nèi)存映射外設(shè)。

在多個(gè)線(xiàn)程之間共享全局變量。

在中斷例程或信號(hào)處理程序中訪(fǎng)問(wèn)全局變量。

比如,在STM32代碼中:

#define __O volatile /*!< Defines 'write only' permissions */#define?????__IO????volatile?????????????/*!

瀏覽代碼,你會(huì)發(fā)現(xiàn),很多地方都使用了“__IO”,也就是volatile.

在跑系統(tǒng)的項(xiàng)目中,線(xiàn)程間共享的全局變量,建議都加上volatile關(guān)鍵字,這一點(diǎn),很多人沒(méi)有在意。

2.不使用volatile時(shí)可能出現(xiàn)的問(wèn)題

如果未將變量用volatile聲明,則編譯器會(huì)假定其值不能在其定義的范圍之外進(jìn)行修改。

因此,編譯器可能會(huì)執(zhí)行不需要的優(yōu)化。這可以通過(guò)多種方式表現(xiàn)出來(lái):

在輪詢(xún)硬件時(shí),代碼可能會(huì)陷入循環(huán)。

多線(xiàn)程代碼可能會(huì)表現(xiàn)出奇怪的行為。

優(yōu)化可能會(huì)導(dǎo)致刪除實(shí)現(xiàn)故意時(shí)序延遲的代碼。


舉例:

自己寫(xiě)一個(gè)延時(shí)函數(shù):

void Delay(int Cnt){ int i; while(Cnt--) { i++; for(i=0; i<10; i++); }}

你在不同優(yōu)化等級(jí)情況下,延時(shí)時(shí)間可能會(huì)不一樣;

同樣的代碼,你在Keil 和 IAR環(huán)境下編譯出來(lái)的延時(shí)時(shí)間也可能不一樣。

當(dāng)然,更深入的理解就會(huì)牽涉到匯編代碼,編譯之后的匯編代碼會(huì)比較直觀的呈現(xiàn)差異。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4977

    瀏覽量

    74419
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1673

    瀏覽量

    51961
  • volatile
    +關(guān)注

    關(guān)注

    0

    文章

    46

    瀏覽量

    13803
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    volatile的修飾符

    ; }   #endif volatile 告訴編譯器i是隨時(shí)可能發(fā)生變化的,每次使用它的時(shí)候必須從i的地址中讀取,因而編譯器生成的可執(zhí)行碼會(huì)重新從i的地址讀取數(shù)據(jù)放在k中。 而優(yōu)化
    發(fā)表于 01-06 07:39

    關(guān)鍵字volatile的含意

    關(guān)鍵字volatile有什么含意? 一個(gè)定義為volatile的變量是說(shuō)這變量可能會(huì)被意想不到地改變,這樣,編譯器就不會(huì)去假設(shè)這個(gè)變量的值了。精確地說(shuō)就是,
    發(fā)表于 12-23 06:33

    interrupt關(guān)鍵字使用

    中斷是嵌入式系統(tǒng)中重要的組成部分,這導(dǎo)致了很多編譯開(kāi)發(fā)商提供一種擴(kuò)展—讓標(biāo)準(zhǔn)C支持中斷。具代表事實(shí)是,產(chǎn)生了一個(gè)新的關(guān)鍵字__interrupt。下面的代碼就使用了__interrupt關(guān)鍵字去定義
    發(fā)表于 12-22 09:36

    Temu跨境電商按關(guān)鍵字搜索Temu商品API的應(yīng)用及接口請(qǐng)求示例

    限于以下幾個(gè)方面: 用戶(hù)搜索商品:當(dāng)用戶(hù)在Temu平臺(tái)上輸入關(guān)鍵字搜索商品時(shí),API會(huì)根據(jù)輸入的關(guān)鍵字返回與之相關(guān)的商品列表,幫助用戶(hù)快速找到感興趣的商品。 數(shù)據(jù)分析與市場(chǎng)調(diào)研:商家可以利用該API進(jìn)行關(guān)鍵詞搜索數(shù)據(jù)的分析,了解
    的頭像 發(fā)表于 11-29 15:08 ?711次閱讀

    哪些場(chǎng)合會(huì)用到volatile關(guān)鍵字?

    ,使用volatile關(guān)鍵字也許能減少代碼bug率。 2.寄存單片機(jī)開(kāi)發(fā),寄存添加volatile關(guān)
    發(fā)表于 11-25 08:19

    什么是??volatile

    volatile是一個(gè)類(lèi)型修飾符(type specifier)。 volatile的作用是作為指令關(guān)鍵字,確保本條指令不會(huì)因編譯器優(yōu)化
    發(fā)表于 11-25 06:36

    天眼查平臺(tái)關(guān)鍵字搜索企業(yè)數(shù)據(jù)API接口技術(shù)指南

    ? 一、接口概述 天眼查提供的企業(yè)搜索API接口,支持通過(guò)關(guān)鍵字查詢(xún)企業(yè)工商信息、經(jīng)營(yíng)狀態(tài)等核心數(shù)據(jù)。該接口采用RESTful架構(gòu),返回JSON格式數(shù)據(jù)。 二、接口認(rèn)證 調(diào)用需使用API密鑰認(rèn)證
    的頭像 發(fā)表于 11-21 11:48 ?920次閱讀
    天眼查平臺(tái)<b class='flag-5'>關(guān)鍵字</b>搜索企業(yè)數(shù)據(jù)API接口技術(shù)指南

    開(kāi)源鴻蒙技術(shù)大會(huì)2025丨編譯器與編程語(yǔ)言分論壇:語(yǔ)言驅(qū)動(dòng)系統(tǒng)創(chuàng)新,編譯賦能生態(tài)繁榮

    在萬(wàn)物智聯(lián)的時(shí)代背景下,操作系統(tǒng)底層能力的構(gòu)建離不開(kāi)編程語(yǔ)言與編譯器關(guān)鍵支撐。作為開(kāi)源鴻蒙生態(tài)的核心技術(shù),語(yǔ)言設(shè)計(jì)與編譯器、虛擬機(jī)實(shí)現(xiàn)的進(jìn)步直接關(guān)系到開(kāi)發(fā)效率、運(yùn)行性能與系統(tǒng)安全。本次分論壇聚焦
    的頭像 發(fā)表于 11-20 17:24 ?1191次閱讀
    開(kāi)源鴻蒙技術(shù)大會(huì)2025丨<b class='flag-5'>編譯器</b>與編程語(yǔ)言分論壇:語(yǔ)言驅(qū)動(dòng)系統(tǒng)創(chuàng)新,<b class='flag-5'>編譯</b>賦能生態(tài)繁榮

    通過(guò)優(yōu)化代碼來(lái)提高M(jìn)CU運(yùn)行效率

    調(diào)用開(kāi)銷(xiāo)。 使用 const 和 volatile 關(guān)鍵字,幫助編譯器進(jìn)行更好的優(yōu)化。 數(shù)據(jù)類(lèi)型選擇 使用與MCU字長(zhǎng)匹配的數(shù)據(jù)類(lèi)型。在32位MCU上,int 和 uint32_t
    發(fā)表于 11-12 08:21

    亞馬遜平臺(tái)根據(jù)關(guān)鍵字搜索商品API接口

    ? ?在電商開(kāi)發(fā)中,集成亞馬遜平臺(tái)的商品搜索功能是常見(jiàn)需求。通過(guò)亞馬遜的Product Advertising API(PAAPI),開(kāi)發(fā)者可以根據(jù)關(guān)鍵字高效檢索商品信息。本技術(shù)帖將逐步介紹如何調(diào)用
    的頭像 發(fā)表于 11-05 15:00 ?535次閱讀
    亞馬遜平臺(tái)根據(jù)<b class='flag-5'>關(guān)鍵字</b>搜索商品API接口

    簡(jiǎn)單的內(nèi)聯(lián)匯編介紹

    __”。 __volatile__或 volatile 是可選的。如果添加了該關(guān)鍵字,則要求編譯器對(duì)后續(xù)括號(hào)內(nèi)添加的匯編程序不進(jìn)行任何優(yōu)化
    發(fā)表于 10-30 08:04

    亞馬遜 SP-API 深度開(kāi)發(fā):關(guān)鍵字搜索接口的購(gòu)物意圖挖掘與合規(guī)競(jìng)品分析

    本文深度解析亞馬遜SP-API關(guān)鍵字搜索接口的合規(guī)調(diào)用與商業(yè)應(yīng)用,涵蓋意圖識(shí)別、競(jìng)品分析、性能優(yōu)化全鏈路。通過(guò)COSMO算法解析用戶(hù)購(gòu)物意圖,結(jié)合合規(guī)技術(shù)方案提升關(guān)鍵詞轉(zhuǎn)化率,助力賣(mài)家實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)決策,安全高效
    的頭像 發(fā)表于 10-17 14:59 ?712次閱讀

    micro 關(guān)鍵字搜索全覆蓋商品,并通過(guò) API 接口提供實(shí)時(shí)數(shù)據(jù)

    micro 關(guān)鍵字搜索全覆蓋商品”并通過(guò) API 接口提供實(shí)時(shí)數(shù)據(jù)
    的頭像 發(fā)表于 07-13 10:13 ?1015次閱讀

    邊緣設(shè)備AI部署:編譯器如何實(shí)現(xiàn)輕量化與高性能?

    、ASIC等)上高效執(zhí)行的機(jī)器代碼。AI編譯器在AI模型的部署和優(yōu)化中扮演著關(guān)鍵角色,能夠顯著提升模型的運(yùn)行效率和性能。 ? AI編譯器的主要功能 ? AI
    的頭像 發(fā)表于 07-06 05:49 ?6978次閱讀

    編譯器功能安全驗(yàn)證的關(guān)鍵要素

    在汽車(chē)、工業(yè)、醫(yī)療等安全關(guān)鍵型應(yīng)用中,確保功能安全合規(guī)性需要嚴(yán)格的工具鏈驗(yàn)證。開(kāi)發(fā)安全關(guān)鍵型軟件的企業(yè)必須遵守ISO 26262、IEC 61508、ISO 62304等國(guó)際標(biāo)準(zhǔn)對(duì)編譯器工具鏈進(jìn)行全面的驗(yàn)證。
    的頭像 發(fā)表于 07-05 13:37 ?1720次閱讀
    浑源县| 基隆市| 舒兰市| 湖州市| 广汉市| 安新县| 固安县| 喀喇沁旗| 新郑市| 含山县| 安图县| 小金县| 和田市| 西丰县| 潜山县| 噶尔县| 凌海市| 满洲里市| 康定县| 区。| 祁阳县| 潞西市| 京山县| 嘉定区| 兴业县| 青州市| 三穗县| 武川县| 宜川县| 横峰县| 西安市| 资阳市| 宜城市| 怀柔区| 蓬莱市| 涞源县| 晋城| 永靖县| 鄄城县| 开化县| 呼伦贝尔市|