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 变量的访问顺序,以确保按照程序代码的顺序执行。
相关推荐
太空漫步113 分钟前
逆序对个数
java·算法·排序算法
CHENWENFEIc9 分钟前
基础排序算法详解:冒泡排序、选择排序与插入排序
c语言·数据结构·算法·排序算法·学习方法·冒泡排序
养佳工具人12 分钟前
Java各种排序
java·算法·排序算法
Fly_hao.belief23 分钟前
泛型的讲解(泛型类、泛型方法、泛型接口)
java
我命由我1234529 分钟前
15.Java 网络编程(网络相关概念、InetAddress、NetworkInterface、TCP 网络通信、UDP 网络通信、超时中断)
java·开发语言·网络·后端·tcp/ip·udp·java-ee
sunshine__sun31 分钟前
自动化测试报错:Exception managing chrome: error decoding response body
java·前端·chrome
yangpipi-39 分钟前
数据结构(C语言版)-4.树与二叉树
c语言·开发语言·数据结构
蓝天星空42 分钟前
spring boot 3集成swagger
java·spring boot
漫漫不慢.1 小时前
//需求:定义一个数组,存入1~5.要求打乱数组中所有数据的顺序
java
不修×蝙蝠1 小时前
搭建Tomcat(一)---Socket&ServerSocket
java·服务器·笔记·tomcat·socket·serversocket