变量访问被ARM架构安排的明明白白!
作为过来人,我发现很多程序猿新手,在编写代码的时候,特别喜欢定义很多独立的全局变量,而不是把这些变量封装到一个结构体中,主要原因是图方便,但是要知道,这其实是一个不好的习惯,而且会降低整体代码的性能。
另一方面,最近有幸与大神「公众号:裸机思维」的傻孩子交流的时候,他聊到:“其实Cortex在架构层面就是更偏好面向对象的(哪怕你只是使用了结构体),其表现形式就是:「Cortex所有的寻址模式都是间接寻址」——换句话说「一定依赖一个寄存器作为基地址」。
举例来说,同样是访问外设寄存器,过去在8位和16位机时代,人们喜欢给每一个寄存器都单独绑定地址——当作全局变量来访问,而现在Cortex在架构上更鼓励底层驱动以寄存器页(也就是结构体)为单位来定义寄存器,这也就是说,同一个外设的寄存器是借助拥有同一个基地址的结构体来访问的。”
以Cortex A9架构为前提,下面一口君详细给你解释为什么使用结构体效率会更高一些。
一、全局变量代码反汇编
1. 源文件
「gcd.s」
.text
.global _start
_start:
ldr sp,=0x70000000 get stack top pointer
b main
「main.c」
* main.c
*
* Created on: 2020-12-12
* Author: pengdan
int xx=0;
int yy=0;
int zz=0;
int main(void)
{
xx=0x11;
yy=0x22;
zz=0x33;
while(1);
return 0;
}
「map.lds」
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{
. = 0x40008000;
. = ALIGN(4);
.text :
{
gcd.o(.text)
*(.text)
}
. = ALIGN(4);
.rodata :
{ *(.rodata) }
. = ALIGN(4);
.data :
{ *(.data) }
. = ALIGN(4);
.bss :
{ *(.bss) }
}
「Makefile」
TARGET=gcd
TARGETC=main
all:
arm-none-linux-gnueabi-gcc -O1 -g -c -o $(TARGETC).o $(TARGETC).c
arm-none-linux-gnueabi-gcc -O1 -g -c -o $(TARGET).o $(TARGET).s
arm-none-linux-gnueabi-gcc -O1 -g -S -o $(TARGETC).s $(TARGETC).c
arm-none-linux-gnueabi-ld $(TARGETC).o $(TARGET).o -Tmap.lds -o $(TARGET).elf
arm-none-linux-gnueabi-objcopy -O binary -S $(TARGET).elf $(TARGET).bin
arm-none-linux-gnueabi-objdump -D $(TARGET).elf > $(TARGET).dis
clean:
rm -rf *.o *.elf *.dis *.bin
【交叉编译工具,自行搜索安装】
图片新闻
最新活动更多
-
4月17日立即报名 >> 【线下论坛】新唐科技×芯唐南京 2026 年度研讨会
-
4月22日立即报名>> 【在线会议】ADI六款仪器仪表方案助力产品快速上市
-
即日-4.30立即下载>>> 【限时下载】《2025激光行业应用创新发展蓝皮书》
-
5月14日立即下载>> 【白皮书】村田室内外定位解决方案
-
5月29日立即下载>> 【白皮书】工业视觉AI实战白皮书合集
-
5月30日立即报名>> 2026激光行业应用创新发展蓝皮书火热招编中!
推荐专题
- 1 2026,中国工程机械的“分水岭之战”
- 2 海康威视:用“集分式”架构搭建轻、减、省的指挥中心大屏显控系统
- 3 智赋食饮新局:《威图赋能食品饮料行业高效可持续发展白皮书》发布会即将开启!
- 4 开春来深圳,看全球先进精密制造!2026 ITES深圳工业展,即将启幕!
- 5 SEMICON CHINA 2026首日,格创东智携“章鱼智脑”和全场景工业智能体群,开启半导体智造自主决策时代
- 6 格创东智SEMICON CHINA 2026圆满收官,章鱼智脑与全场景智能体群定义工业智能决策新高度
- 7 智启新程,聚势前行,2026 ITES深圳工业展盛大启幕!
- 8 格创东智何军登榜2025福布斯中国科创人物,工业AI革新力获权威认可
- 9 工业 CLAW 破局:“章鱼智脑”,智能工厂仿生式自主决策中枢
- 10 丰田汽车公司为实现碳中和制定的动力总成多路径策略PPT


分享














发表评论
登录
手机
验证码
手机/邮箱/用户名
密码
立即登录即可访问所有OFweek服务
还不是会员?免费注册
忘记密码其他方式
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论