當前位置:
首頁 >
[实验]-从汇编代码来看volatile关键字的作用
發布時間:2025/3/21
25
豆豆
生活随笔
收集整理的這篇文章主要介紹了
[实验]-从汇编代码来看volatile关键字的作用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
★★★ 個人博客導讀首頁—點擊此處 ★★★
環境aarch64的交叉編譯器
我們將C語言翻譯成匯編代碼,來看volatile關鍵字的作用
我們先看一段C語言代碼
void udelay(uint64_t usec) {uint64_t start, cnt, delta,freq;volatile uint64_t delta_us = 0; //------------------在這里定義了一個volatile變量uint64_t reference_ratio = 16;if(timer_start == 0){generic_timer_start();start = read_cntpct_el0();delta_us = 1000; //------------------ 給這個變量賦值100while(delta_us) //------------------ 使用這個變量,這里是判斷該變量是否等于0,然后走相應邏輯{cnt = read_cntpct_el0();if(cnt != start)break;delta_us--;if(delta_us == 0){base_frequency = 0;}}INFO("base_frequency %ld\n",base_frequency);} ...... }翻譯成匯編后,從匯編代碼來看,delta_us=1000,直接將1000寫道棧尾中了.
while(delta_us)代碼,需要讀出delta_us,也是種棧尾種讀出來的
我們去除volatile關鍵字后,再翻譯成匯編:
uint64_t delta_us = 0; //------------------在這里定義了一個volatile變量
翻譯成匯編后,從匯編代碼來看,delta_us=1000,只是將1000寫入到了x0寄存器中
總結volatile關鍵字的作用:其實就算告訴編譯器,我要讀寫的數據,不要從X0-X30通用寄存器中讀取,每次都要從內存中去讀取,這里說的內存可能是主內存(main-memory)、也可能是各級cache等
總結
以上是生活随笔為你收集整理的[实验]-从汇编代码来看volatile关键字的作用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ARM Trustzone的安全扩展介绍
- 下一篇: [思考]-32位的应用程序为什么不能跑6