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 变量的访问顺序,以确保按照程序代码的顺序执行。
相关推荐
JAVA社区2 分钟前
Java进阶全套教程(一)—— 数据框架Mybatis详解
java·开发语言·面试·职场和发展·mybatis
hhcgchpspk5 分钟前
Windows API线程学习
c语言·windows·学习·多线程·windows api
JAVA学习通5 分钟前
《大营销平台系统设计实现》 - 营销服务 第10节:不超卖库存规则实现
java·数据库·oracle·责任链模式·codex
qq_2518364576 分钟前
基于java 安卓-RSS阅读系统毕业论文
android·java·开发语言
lili00126 分钟前
Gemini 3.5发布后的AI格局:谷歌重新定义行业标准
java·人工智能·python·ai编程
JAVA社区10 分钟前
Java进阶全套教程(八)—— Docker超详细实战详解
java·运维·开发语言·docker·容器·面试·职场和发展
JunLa11 分钟前
Java语法糖
java·python·哈希算法
t-think12 分钟前
深入了解指针(3)
c语言·算法
Mr.Java.14 分钟前
Spring AI MCP Server分布式翻车现场:Streamable协议的甜蜜与危险,以及无状态救赎
java·后端·spring·ai·负载均衡
夕除14 分钟前
spring boot 11
java·spring boot·后端