亚洲男人天堂av,国产一区二区久久精品,国产精品一区二区久久精品,国产精品久久久久久一区二区三区,五月婷婷在线观看视频,亚洲狠狠色丁香婷婷综合

歡迎您訪問深入解析C語言關(guān)鍵字register:基礎(chǔ)介紹與實(shí)際應(yīng)用分析!

深入解析C語言關(guān)鍵字register:基礎(chǔ)介紹與實(shí)際應(yīng)用分析

更新時(shí)間:2024-12-22 16:59:59作者:佚名

1、嘮叨(聽聽文章配上音樂效果更好)

今天文章一開始,我就為大家挑選一首非常經(jīng)典的歌曲。喜歡《仙劍》的朋友聽到這首音樂,腦海中可能會(huì)閃現(xiàn)出另外一個(gè)場景。你可以感覺到!今天我就一步步講解C語言關(guān)鍵字寄存器。可能你在日常的項(xiàng)目開發(fā)中不太會(huì)用到這個(gè)關(guān)鍵字。他們中的大多數(shù)人都是從書籍和文獻(xiàn)中知道的。估計(jì)有的朋友根本沒有打過這個(gè)關(guān)鍵字。關(guān)鍵詞。哈哈,作者在之前的文章中一直提到“存在即合理”的觀點(diǎn)。這也是讓我在生活和學(xué)習(xí)中始終充滿好奇心的指導(dǎo)思想。好了,廢話不多說,進(jìn)入今天的正題。筆者將通過實(shí)驗(yàn)現(xiàn)象來幫助大家理解和分析這個(gè)關(guān)鍵詞:

register怎么讀_register什么意思_register是什么意思?怎么讀

2. 注冊(cè)基本介紹

注冊(cè)字面意思是注冊(cè)。 C語言中用this關(guān)鍵字修飾表示該變量被頻繁使用,如局部變量定義:register int Var = 0;,建議將變量放在寄存器中進(jìn)行操作。以提高速度。 CPU在運(yùn)行時(shí)需要從外界讀取數(shù)據(jù)。數(shù)據(jù)來源主要來自: 1)寄存器; 2)現(xiàn)金; 3)記憶。然而CPU訪問內(nèi)存時(shí),大部分?jǐn)?shù)據(jù)都要經(jīng)過寄存器。但這種方式與直接訪問寄存器相比,增加了數(shù)據(jù)訪問的時(shí)間。在我們上一篇文章中,我們說過局部變量存在于棧中,棧存在于內(nèi)存中。如果我們可以將變量放入寄存器中,不是可以加快訪問速度嗎?

register是什么意思?怎么讀_register什么意思_register怎么讀

register怎么讀_register什么意思_register是什么意思?怎么讀

但使用register關(guān)鍵字時(shí)需要注意以下幾點(diǎn):

1)我們都知道&符號(hào)的意思是獲取內(nèi)存地址,所以由于是用寄存器修改的,所以一般不能使用該符號(hào)進(jìn)行訪問。

2)前面我們提到了C語言中各種數(shù)據(jù)的存儲(chǔ)方式。例如,全局變量或靜態(tài)變量在內(nèi)存中具有特定的地址。那么可以用register修改嗎?肯定不能修改,那么什么變量可以用this關(guān)鍵字修改呢?答案是局部變量。在上一篇文章中我也提到過,局部變量在函數(shù)運(yùn)行過程中會(huì)自動(dòng)分配在棧上,而棧也在內(nèi)存中。為什么可以分配到寄存器中呢? (哈哈,這三個(gè)問題讓我很困惑!)

register怎么讀_register是什么意思?怎么讀_register什么意思

如上圖所示,局部變量的生命周期很短,寄存器不會(huì)一直被占用。不過,函數(shù)1使用完之后,就可以被函數(shù)2使用了,這樣就大大提高了運(yùn)行速度。

3)我們都知道芯片內(nèi)部的寄存器是有限的,并且每個(gè)寄存器都有特定的功能。我們可以用來存儲(chǔ)變量的并不多,更何況并不是所有類型的變量都可以存儲(chǔ)在寄存器中。使用,這個(gè)需要根據(jù)具體的芯片來確定,比如浮點(diǎn)數(shù)在大多數(shù)芯片中是不能放在寄存器中進(jìn)行讀寫的,所以寄存器只是告訴編譯器該變量會(huì)被頻繁使用。建議放在寄存器中進(jìn)行讀寫。至于是否存儲(chǔ),編譯器必須自己決定,所以有時(shí)編譯會(huì)忽略這個(gè)關(guān)鍵字。

register怎么讀_register什么意思_register是什么意思?怎么讀

好吧,有一些注意事項(xiàng)可能需要用例子來解釋。光在這里談?wù)撍鼈兪菦]有用的。讓我們做一些實(shí)驗(yàn)。

3.實(shí)驗(yàn)現(xiàn)象看套準(zhǔn)效果

我寫了一個(gè)簡單的測試程序,就是我們學(xué)習(xí)編程最先用到的循環(huán)延遲。我們通過register關(guān)鍵字修改和不修改局部變量來獲取程序運(yùn)行時(shí)間。 (使用Dev_C++運(yùn)行程序)

  1. #include <stdio.h>

  2. #include <stdlib.h>

  3. /*************************************

  4. * Fuction: 測試register

  5. * Author : (公眾號(hào):最后一個(gè)bug)

  6. ************************************/

  7. int main(int argc, char *argv[]) {

  8. //register long cnt = 0;

  9. long cnt = 0;

  10. int timer = 0;

  11. for(cnt = 0;cnt < 100000000;cnt++)

  12. {

  13. timer++;

  14. }

  15. printf("歡迎關(guān)注公眾號(hào):最后一個(gè)bug!");

  16. return 0;

  17. }

不修改寄存器的情況下register是什么意思?怎么讀網(wǎng)校頭條,大約運(yùn)行3次的時(shí)間:

register是什么意思?怎么讀_register什么意思_register怎么讀

使用寄存器修改三倍的大概運(yùn)行時(shí)間:

register什么意思_register怎么讀_register是什么意思?怎么讀

register什么意思_register怎么讀_register是什么意思?怎么讀

簡單分析一下:以上結(jié)果僅供對(duì)比(筆者運(yùn)行程序所用的電腦仍然是大學(xué)時(shí)使用的電腦,雖然更換了固態(tài)和內(nèi)存模塊,但畢竟還是古董)。可見,使用寄存器確實(shí)可以縮短程序執(zhí)行時(shí)間。到時(shí)候有些朋友就會(huì)問了。前面說過,register只建議放在一個(gè)用于讀寫的寄存器中。那么如何判斷程序是否已經(jīng)放入寄存器來運(yùn)行程序呢?答案就是三個(gè)字------“看程序的匯編”! !

4.如何在Dev_C++中查看C程序的匯編

這里簡單介紹一下Dev_C++的程序集查看功能,主要是為后面的知識(shí)講解做鋪墊。同時(shí),最近我發(fā)現(xiàn)很多朋友還在使用VC++學(xué)習(xí),也遇到了很多安裝和系統(tǒng)兼容性問題。筆者覺得如果只是為了學(xué)習(xí),可以安裝Dev_C++軟件進(jìn)行練習(xí)。同時(shí),安裝包較小,安裝過程也非常方便。

Dev_C++的基礎(chǔ)教程可以在網(wǎng)上搜索學(xué)習(xí)。這里筆者簡單講一下如何調(diào)試和查看代碼匯編?為了方便大家驗(yàn)證結(jié)果。

1)在代碼行號(hào)前面放置一個(gè)端點(diǎn),然后點(diǎn)擊左下角的“調(diào)試”,進(jìn)入調(diào)試狀態(tài)。

register什么意思_register是什么意思?怎么讀_register怎么讀

register什么意思_register怎么讀_register是什么意思?怎么讀

2) 進(jìn)入調(diào)試模式,調(diào)試選項(xiàng)卡中的所有按鈕均被激活。點(diǎn)擊ViewCPUwindows,彈出對(duì)應(yīng)的匯編語言窗口。同時(shí),單擊“下一條指令”,執(zhí)行一條匯編指令。其他按鈕的功能和我們的大致相同。正常的調(diào)試功能類似。大家可以去網(wǎng)上搜索了解一下,這里不再贅述。

register是什么意思?怎么讀_register怎么讀_register什么意思

5、判斷注冊(cè)是否有效?

上面已經(jīng)鋪好了。要判斷寄存器是否有效,只需檢查相應(yīng)的匯編代碼即可。如果我們從寄存器中讀寫被寄存器修改的變量,就說明編譯器已經(jīng)對(duì)其進(jìn)行了優(yōu)化。如果仍然是來自相應(yīng)的內(nèi)存值,編譯器不會(huì)優(yōu)化。我們簡單看一下修改和不修改的結(jié)果。

1) 使用寄存器修改的匯編語句:

register怎么讀_register什么意思_register是什么意思?怎么讀

分析:我們看到C語言中的cnt++在右邊的匯編中變成了add ebx,0x1;這說明cnt確實(shí)是放入寄存器中使用的。

register是什么意思?怎么讀_register什么意思_register怎么讀

2)不修改寄存器的匯編語句:

register什么意思_register怎么讀_register是什么意思?怎么讀

分析一下:我們可以看到,這里的cnt++取的是esp+0x1c地址所在內(nèi)存的值,進(jìn)行自增操作,這樣我們最終就得到了上面的程序運(yùn)行時(shí)間,顯然是慢了一些。

這里補(bǔ)充一些知識(shí):正在學(xué)習(xí)ARM的朋友應(yīng)該知道,ARM中傳遞的函數(shù)參數(shù)大部分都是通過r0~r1寄存器來操作的,更多的其他參數(shù)是通過棧傳遞的,所以我們有時(shí)通過盡量不要輸入更多超過4個(gè)參數(shù),這樣就可以在寄存器中完成更多的處理,提高程序的效率。我在這里簡單提一下。我會(huì)發(fā)表一篇關(guān)于如何提高程序效率的文章供大家閱讀。

6. 最后總結(jié)

你應(yīng)該感覺寄存器本身其實(shí)很簡單。根本沒什么可說的。但由于它有一定的模糊性,所以會(huì)有人確認(rèn)。不過,在確認(rèn)的過程中,你其實(shí)學(xué)到的不僅僅是這個(gè)關(guān)鍵字register是什么意思?怎么讀,還有很多額外的知識(shí),比如程序的運(yùn)行、編譯處理器的處理等等,知識(shí)都是相互關(guān)聯(lián)的,所以筆者經(jīng)常檢查他的自己的知識(shí)體系,尋找并填補(bǔ)空白。然而,現(xiàn)代編譯器往往不使用register關(guān)鍵字,編譯器會(huì)根據(jù)代碼自動(dòng)優(yōu)化。處理,但是如果你想按照自己的想法來優(yōu)化程序,你還是需要了解清楚。

為您推薦

batteries什么意思_batteries怎么讀_batteries翻譯_用法_發(fā)音_詞組_同反義詞

batteries的基本釋義為 基本解釋 n. 電池;(蓄)電池(組)( battery的名詞復(fù)數(shù) );一系列;排炮;層架式雞籠等等。貝語網(wǎng)校(www.hfjinjia.cn)為您提供batteries發(fā)音,英語單詞batteries的音標(biāo),batteries中文意思,batteries的過去式,batteries雙語例句等相關(guān)英語知識(shí)。

2024-12-22 10:41

batter什么意思_batter怎么讀_batter翻譯_用法_發(fā)音_詞組_同反義詞

batter的基本釋義為 基本解釋 vt.& vi. 連續(xù)猛擊;搗碎,打爛;磨損;使內(nèi)傾,使傾斜n. (鉛字的)磨損,毀損;(用雞蛋、牛奶、面粉等調(diào)成的)糊狀物;擊球員,擊球手;墻面的傾斜等等。貝語網(wǎng)校(www.hfjinjia.cn)為您提供batter發(fā)音,英語單詞batter的音標(biāo),batter中文意思,batter的過去式,batter雙語例句等相關(guān)英語知識(shí)。

2024-12-22 10:41

bats什么意思_bats怎么讀_bats翻譯_用法_發(fā)音_詞組_同反義詞

bats的基本釋義為 基本解釋 adj. 神經(jīng)不正常的,怪異的n. 球棒( bat的名詞復(fù)數(shù) );球拍;擊球員;蝙蝠等等。貝語網(wǎng)校(www.hfjinjia.cn)為您提供bats發(fā)音,英語單詞bats的音標(biāo),bats中文意思,bats的過去式,bats雙語例句等相關(guān)英語知識(shí)。

2024-12-22 10:40

basked什么意思_basked怎么讀_basked翻譯_用法_發(fā)音_詞組_同反義詞

basked的基本釋義為 基本解釋 v. 曬太陽,取暖( bask的過去式和過去分詞 );對(duì)…感到樂趣;因他人的功績而出名;仰仗…的余澤等等。貝語網(wǎng)校(www.hfjinjia.cn)為您提供basked發(fā)音,英語單詞basked的音標(biāo),basked中文意思,basked的過去式,basked雙語例句等相關(guān)英語知識(shí)。

2024-12-22 10:40

basin什么意思_basin怎么讀_basin翻譯_用法_發(fā)音_詞組_同反義詞

basin的基本釋義為 基本解釋 n. 盆;盆地;流域;水坑,池塘等等。貝語網(wǎng)校(www.hfjinjia.cn)為您提供basin發(fā)音,英語單詞basin的音標(biāo),basin中文意思,basin的過去式,basin雙語例句等相關(guān)英語知識(shí)。

2024-12-22 10:40

bashfulness什么意思_bashfulness怎么讀_bashfulness翻譯_用法_發(fā)音_詞組_同反義詞

bashfulness的基本釋義為 基本解釋 n. 忸怩的,羞怯的,害羞的等等。貝語網(wǎng)校(www.hfjinjia.cn)為您提供bashfulness發(fā)音,英語單詞bashfulness的音標(biāo),bashfulness中文意思,bashfulness的過去式,bashfulness雙語例句等相關(guān)英語知識(shí)。

2024-12-22 10:40

加載中...
主站蜘蛛池模板: 久久一区二区三区免费播放 | 婷婷深爱五月 | 在线观看亚洲免费视频 | 婷婷综合激情五月中文字幕 | 中国精品视频一区二区三区 | 一区二区三区无码高清视频 | 久久久久久久蜜桃 | 亚洲乱人伦在线 | 亚洲自偷精品视频自拍 | 丁香五月亚洲综合在线 | 亚洲二区在线视频 | 国产成人毛片精品不卡在线 | 国产精品视频分类 | 男人天堂日韩 | 欧美xxxx新一区二区三区 | 欧美色爽 | 亚洲狠狠干 | 久久人人草 | 久久第一页 | 自拍偷拍第一 | 精品一区二区久久 | 亚洲成人自拍 | 欧美日韩综合一区 | 亭亭五月天激情 | 免费国产黄网站在线观看 | 国产在线精品成人一区二区三区 | 国产欧美曰韩一区二区三区 | 在线观看网站国产 | 伊人亚洲综合青草青草久热 | 久草婷婷| 在线观看亚洲免费视频 | 中文字幕理论电影 | 无毛片 | 亚洲国产欧美自拍 | 亚洲成人app | 亚洲第一福利视频 | 一区二区三区在线播放 | 亚洲情综合五月天 | 亚洲欧洲精品成人久久曰 | 亚洲欧美国产精品 | 男女男精品视频免费观看 |