目录

a= *(volatile u8 *)0x0000 0020

a= *(volatile u8 *)0x00000020中 0x0000_0020是32位的。

整体含义 :将内存地址 0x00000020 处的8位无符号值读取出来,并赋值给变量 a

(volatile u8 *) 是一种类型转换,用于将一个值转换为指向 volatile u8 类型的指针。在C和C++编程中,这种语法通常用于直接访问特定的内存地址,尤其在嵌入式系统或底层硬件编程中非常常见。

同时,也能通过*(volatile u8 *) = 0x12,对该地址写入数据。

volatile

在C语言中,volatile 是一个关键字,用于告诉编译器某个变量的值可能会在程序的控制之外被改变。它通常被用在嵌入式编程中,与硬件寄存器、内存映射区域或者信号处理等相关的代码中。

volatile 的作用

volatile 告诉编译器:

  1. 禁止优化 :不要对带有 volatile 的变量进行优化,必须每次访问都从内存中读取或写入,而不能使用寄存器缓存等方式。
  2. 防止指令重排序 :编译器不能调整对 volatile 变量的访问顺序,以确保按照程序代码的顺序执行。
本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
振鹏Dong35 分钟前
字符串——面试考察高频算法题
java·数据结构·算法
小小鸭程序员1 小时前
Spring Boot项目连接MySQL数据库及CRUD操作示例
java·spring boot·python·mysql·spring
北冥有鱼被烹1 小时前
【代码模板】C语言如何修改文件权限?读写执行权限对应值是多少?(chmod(“./a.out“, 0741);bit 2 1 0表示 读 写 执行)
c语言
forestsea1 小时前
Java虚拟机面试题:内存管理(中)
java·开发语言
茶本无香1 小时前
Java异步编程中的CompletableFuture介绍、常见错误及最佳实践
java·future·异步·常见错误
写代码的小王吧1 小时前
【安全】Java幂等性校验解决重复点击(6种实现方式)
java·linux·开发语言·安全·web安全·网络安全·音视频
麓殇⊙2 小时前
springMVC--Controller配置总结
java·spring
字节源流2 小时前
【spring Cloud Netflix】OpenFeign组件
java·spring boot·后端
myloveasuka2 小时前
[Linux]进程与PCB的关系,进程的基本操作
linux·c语言·c++
Run_Teenage2 小时前
C语言 数据结构【双向链表】动态模拟实现
c语言·数据结构·链表