欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
volatile 關(guān)鍵字
http://blog.chinaunix.net/uid-27164517-id-3296883.html
2012
volatile——C++關(guān)鍵字
volatile的本意是“易變的” 由于訪(fǎng)問(wèn)寄存器的速度要快過(guò)RAM,所以編譯器一般都會(huì )作減少存取外部RAM的優(yōu)化,但有可能會(huì )讀臟數據。當要求使用volatile 聲明的變量的值的時(shí)候,系統總是重新從它所在的內存讀取數據,即使它前面的指令剛剛從該處讀取過(guò)數據。而且讀取的數據立刻被保存。

精確地說(shuō)就是,優(yōu)化器在用到這個(gè)變量時(shí)必須每次都小心地重新從內存里讀取這個(gè)變量的值,而不是使用保存在寄存器里的備份。 下面是volatile變量的幾個(gè)例子:

1) 并行設備的硬件寄存器(如:狀態(tài)寄存器)

2) 一個(gè)中斷服務(wù)子程序中會(huì )訪(fǎng)問(wèn)到的非自動(dòng)變量(Non-automatic variables)

3) 多線(xiàn)程應用中被幾個(gè)任務(wù)共享的變量

在這里要說(shuō)下,其實(shí)不僅僅是并行設備的硬件寄存器,串行設備的硬件寄存器也行,也就是說(shuō)只要是硬件寄存器都需要這么做,當我們不能確保寄存器里的值一定 不會(huì )變的情況下就需要使用volatile??聪旅娴睦?,2410addr.h是所有寄存器中的頭文件,其中就有很多volatile的應用,下面列出 一個(gè)宏定義出來(lái):

#define rURXH0 (*(volatile unsigned char *)0x50000024) //UART 0 Receive buffer

這個(gè)就是串行的接收buffer,其地址為0x50000024,如果我們沒(méi)有將這個(gè)地址強行轉換成volatile,那么我們在使用rURXH0時(shí), 可能直接從cpu的寄存器中取值。因為之前rURXH0被訪(fǎng)問(wèn)過(guò),也就是說(shuō)之前就從內存中取出rURXH0的值保存到 某個(gè)寄存器中。之所以直接從寄存器中取值,而不去內存中取值,是因為編譯器優(yōu)化代碼的結果(訪(fǎng)問(wèn)cpu寄存器比訪(fǎng)問(wèn)ram快的多)。用volatile關(guān) 鍵字對0x50000024進(jìn)行強制轉換,使得每一次被訪(fǎng)問(wèn)rURXH0時(shí),執行部件都會(huì )從0x50000024這個(gè)內存單元中取出值來(lái)賦值給 rURXH0。

volatile關(guān)鍵字是一種類(lèi)型修飾符,用它聲明的類(lèi)型變量表示可以被某些編譯器未知的因素更改。volatile 提醒編譯器它后面所定義的變量隨時(shí)都有可能改變,因此編譯后的程序每次需要存儲或讀取這個(gè)變量的時(shí)候,都會(huì )直接從變量地址中讀取數據。如 果沒(méi)有volatile關(guān)鍵字,則編譯器可能優(yōu)化讀取和存儲,可能暫時(shí)使用寄存器中的值,如果這個(gè)變量由別的程序更新了的話(huà),將出現不一致的現象。所以遇 到這個(gè)關(guān)鍵字聲明的變量,編譯器對訪(fǎng)問(wèn)該變量的代碼就不再進(jìn)行優(yōu)化,從而可以提供對特殊地址的穩定訪(fǎng)問(wèn)。

一般說(shuō)來(lái),volatile用在如下的幾個(gè)地方:

1、中斷服務(wù)程序中修改的供其它程序檢測的變量需要加volatile;

2、多任務(wù)環(huán)境下各任務(wù)間共享的標志應該加volatile;

3、存儲器映射的硬件寄存器通常也要加volatile說(shuō)明,因為每次對它的讀寫(xiě)都可能由不同意義;

另外,以上這幾種情況經(jīng)常還要同時(shí)考慮數據的完整性(相互關(guān)聯(lián)的幾個(gè)標志讀了一半被打斷了重寫(xiě)),在1中可以通過(guò)關(guān)中斷來(lái)實(shí)現,2中可以禁止任務(wù)調度,3中則只能依靠硬件的良好設計了。                                   
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
C語(yǔ)言中volatile關(guān)鍵字的作用
C語(yǔ)言丨深入理解volatile關(guān)鍵字
詳解C中volatile關(guān)鍵字
C 語(yǔ)言中的volatile
C/C++關(guān)鍵詞 - volatile
volatile關(guān)鍵字
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久