当前位置:网站首页>嵌入式C语言指针别名
嵌入式C语言指针别名
2022-07-27 16:51:00 【WangLanguager】
1、指针别名
(1)当两个指针指向同一个对象时,这两个指针被称作该对象的别名
(2)编译器的特点
①编译器是悲观的
②编译器不知道指针是否是别名
2、例:对两个定时器进行步进累加
void timers_v1(int *timer1,int *timer2, int *step)
{
*timer1 += *step;
*timer2 += *step;
}
上述代码的汇编代码为:
timers_v1.s
LDR r3,[r0,#0] ;r3=*timer1
LDR r12,[r2,#0] ;r12=*step
ADD r3,r3,r12 ;r3+=r12
STR r3,[r0,#0] ;*timer1=r3
LDR r0,[r1,#0] ;r0=*timer2
LDR r2,[r2,#0] ;r2=*step
ADD r0,r0,r12 ;r0+=r12
STR r0,[r1,#0] ;*timer2=r0
MOV pc,r14 ;return
*step变量加载了两次
3、思考:采用什么办法可以避免读两次内存?
4、代码改进:增加局部变量,缓存*step的值,使用临时变量进行后续的运算。
void timers_v2(int *timer1,int *timer2, int *step)
{
int step = *step;
*timer1 += step ;
*timer2 += step;
}
边栏推荐
- C language: 13. Pointer and memory
- kettle 合并记录 数据减少
- Responsibility should be assigned to people, and Guangzhou should take multiple measures to build a "safety line" for children in summer
- Basic use of Nacos (1) - getting started
- Daily question (02): inverted string
- C language: 7. How to use C language multi source files
- kettle switch / case 控件实现分类处理
- 阿里云视频点播服务的开通和使用
- MySQL learning notes (1) -- variables
- c语言:clion调试方法
猜你喜欢

Basic use of Nacos (1) - getting started

电商商城小程序项目完整源码(微信小程序)

kettle学习——8.2版本的资源库配置变为灰色,且没有了Connect按钮

Memory management A4

Opening and using Alibaba cloud object storage OSS

ipfs通过接口获得公钥、私钥,并加密存储。第一弹

golang设置国内镜像,vscode配置golang开发环境,vscode调试golang代码

C language: 15. Structure

c语言:8、makeFile编写

Debian夺回“debian.community“ 域名,喷子仍不善罢甘休
随机推荐
C language: 7. How to use C language multi source files
MySQL learning notes (2) -- stored procedures and stored functions
Sword finger offer17- print from 1 to the maximum n digits - Analog
来一遍《剑指Offer》03. 数组中重复的数字
Anaconda下安装Talib库
asp. Net experience
sql 字段类型转换
VMware: set up SSH
MongoDB学习笔记(1)——安装MongoDB及其相关配置
golang设置国内镜像,vscode配置golang开发环境,vscode调试golang代码
C language: C language code style
C # one method returns multiple values. Suggestions collection
New system installation mysql+sqlyog
低代码实现探索(四十五)业务参数
Kettle consolidated record data reduction
The first entry-level operation of kettle (reading excel, outputting Excel)
Using vscode to build u-boot development environment
Summary of APP launch in vivo application market
kettle引用外部脚本完成电话号码清洗、去重缩进
Daily question (02): inverted string