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 变量的访问顺序,以确保按照程序代码的顺序执行。
相关推荐
许彰午几秒前
55-字典缓存与通知SPI
java·低代码·架构
captain3765 分钟前
HTTP(2)
java·网络·http·java-ee
徐子童7 分钟前
介绍MVCC机制
java·mysql·面试题·秋招·并发·mvcc
Wang's Blog8 分钟前
Java 项目实战: 外卖平台-启用禁用员工账号与Long精度丢失修复
java·服务器
乌暮13 分钟前
Java 抽象类与接口详解:半成品图纸 vs 能力合同
java·开发语言·后端·学习
一条泥憨鱼20 分钟前
苍穹外卖【day12| 工作台,通过Apache POI导入/导出运营数据】
java·后端·苍穹外卖
心平气和量大福大25 分钟前
android-权限
android·java
牵猫散步的鱼儿28 分钟前
stride 图像步长
c语言
006_31 分钟前
ruoyi-vue-plus项目 minio外网访问配置
java
刃神太酷啦41 分钟前
前端入门第一课:HTML 基础语法 + 常用标签 + 实战全解
服务器·c语言·前端·javascript·css·c++·html