91精品视频在线看_久久国产精品久久国产片_青春草在线视频精品_伊人天天躁夜夜躁狠狠

歡迎您訪問深入解析C語言關鍵字register:基礎介紹與實際應用分析!

深入解析C語言關鍵字register:基礎介紹與實際應用分析

更新時間:2024-12-22 16:59:59作者:佚名

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

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

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

2. 注冊基本介紹

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

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

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

但使用register關鍵字時需要注意以下幾點:

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

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

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

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

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

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

好吧,有一些注意事項可能需要用例子來解釋。光在這里談論它們是沒有用的。讓我們做一些實驗。

3.實驗現象看套準效果

我寫了一個簡單的測試程序,就是我們學習編程最先用到的循環延遲。我們通過register關鍵字修改和不修改局部變量來獲取程序運行時間。 (使用Dev_C++運行程序)

  1. #include <stdio.h>

  2. #include <stdlib.h>

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

  4. * Fuction: 測試register

  5. * Author : (公眾號:最后一個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("歡迎關注公眾號:最后一個bug!");

  16. return 0;

  17. }

不修改寄存器的情況下register是什么意思?怎么讀網校頭條,大約運行3次的時間:

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

使用寄存器修改三倍的大概運行時間:

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

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

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

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

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

Dev_C++的基礎教程可以在網上搜索學習。這里筆者簡單講一下如何調試和查看代碼匯編?為了方便大家驗證結果。

1)在代碼行號前面放置一個端點,然后點擊左下角的“調試”,進入調試狀態。

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

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

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

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

5、判斷注冊是否有效?

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

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

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

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

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

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

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

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

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

6. 最后總結

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

為您推薦

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

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

2024-12-22 10:41

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

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

2024-12-22 10:41

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

bats的基本釋義為 基本解釋 adj. 神經不正常的,怪異的n. 球棒( bat的名詞復數 );球拍;擊球員;蝙蝠等等。貝語網校(www.www.kabiyimu.com)為您提供bats發音,英語單詞bats的音標,bats中文意思,bats的過去式,bats雙語例句等相關英語知識。

2024-12-22 10:40

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

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

2024-12-22 10:40

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

basin的基本釋義為 基本解釋 n. 盆;盆地;流域;水坑,池塘等等。貝語網校(www.www.kabiyimu.com)為您提供basin發音,英語單詞basin的音標,basin中文意思,basin的過去式,basin雙語例句等相關英語知識。

2024-12-22 10:40

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

bashfulness的基本釋義為 基本解釋 n. 忸怩的,羞怯的,害羞的等等。貝語網校(www.www.kabiyimu.com)為您提供bashfulness發音,英語單詞bashfulness的音標,bashfulness中文意思,bashfulness的過去式,bashfulness雙語例句等相關英語知識。

2024-12-22 10:40

加載中...
91精品视频在线看_久久国产精品久久国产片_青春草在线视频精品_伊人天天躁夜夜躁狠狠

            日韩欧美国产wwwww| 色综合天天综合| 亚洲综合精品自拍| 国产午夜精品一区二区三区嫩草 | 成人黄色在线视频| 奇米888四色在线精品| 国产精品久久久久久亚洲毛片 | 色94色欧美sute亚洲线路一ni| 精品午夜一区二区三区在线观看| 亚洲一区二区美女| 亚洲免费成人av| 久久新电视剧免费观看| 欧美丰满高潮xxxx喷水动漫| 色偷偷久久人人79超碰人人澡 | 99国产一区二区三精品乱码| 久久国产精品无码网站| 日韩电影在线观看电影| 亚洲欧美日韩中文播放| 日韩你懂的电影在线观看| 91在线视频播放地址| 国产成人免费在线观看| 韩国成人福利片在线播放| 日本中文一区二区三区| 午夜不卡av在线| 亚洲最大的成人av| 亚洲欧美日韩精品久久久久| 日韩一区在线看| 精品久久国产老人久久综合| 日韩欧美国产午夜精品| 日韩一本二本av| 在线不卡一区二区| 欧美日韩一卡二卡| 欧美午夜电影一区| 欧美性大战久久| 欧美日韩成人一区| 欧美美女黄视频| 欧美三级午夜理伦三级中视频| 91福利在线免费观看| 欧美影视一区二区三区| 欧美日韩精品免费观看视频| 91福利精品第一导航| 欧美综合色免费| 欧美日韩精品一区二区三区四区| 欧美日本一道本| 91高清视频免费看| 欧美日韩成人一区二区| 在线91免费看| 久久这里只精品最新地址| 国产无人区一区二区三区| 国产精品国产三级国产专播品爱网| 国产精品久久久久久久裸模| 国产日韩欧美精品在线| 欧美精品一区二区在线播放| 久久久www免费人成精品| 国产精品美女久久久久aⅴ| 国产精品传媒入口麻豆| 亚洲国产欧美在线| 蓝色福利精品导航| 国产.欧美.日韩| 91丝袜呻吟高潮美腿白嫩在线观看| 色噜噜狠狠色综合中国| 91精品综合久久久久久| 久久久精品人体av艺术| 最新久久zyz资源站| 亚洲成人免费在线观看| 精品无人区卡一卡二卡三乱码免费卡| 国产精品一区二区你懂的| 成人国产精品免费观看动漫| 91在线无精精品入口| 欧美高清视频不卡网| 国产亚洲综合av| 亚洲一线二线三线视频| 精品亚洲免费视频| 一本一道久久a久久精品| 91精品国产91久久综合桃花| 久久精品欧美一区二区三区不卡| 欧美激情在线一区二区| 亚洲国产成人tv| 国产精一品亚洲二区在线视频| 91年精品国产| 欧美不卡一区二区三区| 日韩理论片中文av| 男人的j进女人的j一区| 国产精品一二三四| 欧美日韩一二区| 国产精品视频麻豆| 日本va欧美va瓶| 91婷婷韩国欧美一区二区| 日韩欧美国产一区二区三区| 亚洲女人****多毛耸耸8| 久久99国产精品成人| av不卡一区二区三区| 日韩一区二区三区四区| 一区二区视频在线看| 国产精品自拍三区| 欧美精品少妇一区二区三区| 国产精品每日更新在线播放网址| 男男视频亚洲欧美| 国产成人三级在线观看| 日韩一区二区影院| 一区二区三区鲁丝不卡| 成人av免费在线观看| 久久一区二区视频| 日韩中文字幕区一区有砖一区 | 欧美亚洲禁片免费| 中文字幕中文在线不卡住| 午夜精品国产更新| 一本大道久久a久久精品综合| 国产日韩亚洲欧美综合| 天天影视网天天综合色在线播放| www.爱久久.com| 欧美韩日一区二区三区| 精品一区二区三区在线播放| 欧美日韩国产另类不卡| 一区二区视频在线| 老汉av免费一区二区三区| 久久女同互慰一区二区三区| 免费精品99久久国产综合精品| 欧美色综合网站| 一区二区三区四区视频精品免费| 99re热视频精品| 久久久亚洲国产美女国产盗摄| 久久超级碰视频| 日韩午夜三级在线| 日韩综合在线视频| 91成人国产精品| 一二三四社区欧美黄| 欧美最新大片在线看 | 久久亚洲精品国产精品紫薇| 精品一区二区三区日韩| 欧美成人一区二区三区在线观看| 首页国产丝袜综合| 日韩一区二区在线看| 美腿丝袜一区二区三区| 欧美疯狂做受xxxx富婆| 男男gaygay亚洲| 久久午夜免费电影| av电影在线观看完整版一区二区| 亚洲自拍偷拍av| 日韩午夜在线播放| 成人性视频网站| 亚洲va欧美va人人爽午夜| 精品久久久久久久久久久久包黑料| 高清成人免费视频| 亚洲一区二区三区四区中文字幕| 91麻豆精品国产91久久久资源速度| 麻豆91精品91久久久的内涵| 亚洲国产经典视频| 精品视频全国免费看| 国产精品一区二区x88av| 亚洲乱码中文字幕综合| 日韩精品中午字幕| 色综合夜色一区| 美日韩一区二区| 亚洲素人一区二区| 日韩一级片网址| 99久久精品国产网站| 琪琪久久久久日韩精品| 中文字幕在线观看不卡视频| 欧美一级高清片| 91在线视频官网| 久久国产福利国产秒拍| 亚洲精品乱码久久久久久黑人| 欧美电视剧在线观看完整版| 色悠久久久久综合欧美99| 国产在线麻豆精品观看| 亚洲一区二区视频| 国产嫩草影院久久久久| 欧美日本在线播放| 99精品视频在线观看| 韩国一区二区三区| 午夜激情一区二区三区| 国产精品传媒入口麻豆| 久久综合精品国产一区二区三区| 欧美性生活久久| 91在线观看成人| 高清不卡在线观看av| 久久99深爱久久99精品| 性做久久久久久久久| 综合欧美一区二区三区| 久久精品男人天堂av| 日韩一级免费观看| 欧美性猛交xxxx黑人交| 99久久精品一区| 国产超碰在线一区| 国产一区二区主播在线| 免费观看在线综合色| 亚洲国产日韩在线一区模特| 亚洲人成亚洲人成在线观看图片| 久久久国产精品午夜一区ai换脸| 欧美一区二区三区啪啪| 欧美日韩精品电影| 日本韩国一区二区| 色综合色狠狠天天综合色| 99在线精品观看| 成人午夜免费av| 成人av网站大全| 国产·精品毛片| 国产91在线观看丝袜| 国产精品1024|