用C语言宏定义寄存器地址解释 和 关键字 volatile
来源:互联网 发布:弹珠枪在淘宝上怎么搜 编辑:程序博客网 时间:2024/05/17 09:35
现在随意假设个宏定义寄存器地址:
#define GPFDAT (*(volatile unsigned long*)0x56000000)先假设:
unsigned long tmp;定义个无符号长整型变量
unsigned long* GPFDAT_PRT = &tmp;定义个无符号长整型指针
所以现在GPFDAT是存放了地址的指针。同理得:
把0x56000000转换为地址:(volatile unsigned long*)0x56000000,强制转换。
所以0x56000000这个地址中的内容应该为:(*(volatile unsigned long*)0x56000000)。
最后得:GPFDAT这个宏定义代表了某寄存器中的值。
volatile关键字:
别称易失变量:容易丢失的变量;因为编译器为了程序的效率,在编译时会进行一些优化。可有时候我们不希望对某些变量进行优化,所以在变量前加上个volatile关键字,编译器就不会对该变量进行优化了,而是老老实实到内存中再去读取数据。(优化了后可能是把该变量的值存放在某个临时的寄存器中,要用时,直接到寄存器中读取,因为寄存器读取数据比内存中要快很多)。
例:多线程中,一个线程在等另一个线程释放资源时,这个线程会有个while(flag == 0)循环来不断的查看资源是否被释放;而当另个线程把资源释放后会马上修改flag的值,相当于通知等待线程,资源已经释放。这样就不会陷入死锁状态。如果flag变量不用volatile关键字来修饰,将一直读取临时寄存器中的值,而将陷入死锁状态。
0 0
- 用C语言宏定义寄存器地址解释 和 关键字 volatile
- c语言之volatile和register关键字
- C语言关键字volatile
- C语言volatile关键字
- C语言volatile关键字
- C语言关键字volatile
- C语言volatile关键字
- C语言关键字volatile
- C语言volatile关键字
- C语言关键字volatile
- C语言关键字Volatile
- C语言volatile关键字
- C语言volatile关键字
- C语言 volatile 关键字
- C语言关键字volatile
- arm中宏定义地址关键字volatile解析
- C语言 volatile 关键字讲解:
- c语言中volatile关键字
- CountDownLatch使用说明
- HDU 4906 Our happy ending 状压DP
- Python3.3 Djando1.6.5 整合 MySQL Connectort/Python
- 51Talk-Level 7 Unit 1 L2
- 利用resteasy框架构建rest webservice----第六波:实现文件下载
- 用C语言宏定义寄存器地址解释 和 关键字 volatile
- SEO
- java之this关键字
- jQuery 参考手册 - 选择器
- Nand Flash和Nor Flash 启动区别
- linux c 文件 read(读) 和 write (写) 代码分析
- TS流中从流解析出段和表详细信息
- uva10603 Fill
- android自定义标题