[小知识]节约一条指令的启发

今天又受教了,在汇编中对于一条指令的计较,代表了更高的性能和更小的 code size,工程师不能仅仅满足于功能的实现,挖掘硬件和编译器的全部潜力才是目标。学无止境~

1,之前讲到SCR1的CPU Timer寄存器是MMIO的,定义为:

#define MEM_MTIME_CTRL  0x00490000
#define MEM_MTIME_DIV   0x00490004
#define MEM_MTIME       0x00490008
#define MEM_MTIMEH      0x0049000C
#define MEM_MTIMECMP    0x00490010
#define MEM_MTIMECMPH   0x00490014

汇编中如下操作:

li          t0, MEM_MTIMECMP
sw          a1, 4(t0)
sw          a2, 0(t0)

编译器转为:

4817e2:	004902b7          	lui	t0,0x490
4817e6:	01028293          	addi	t0,t0,16 # 490010 <__tcm_end_vma+0xe3cc>
4817ea:	00b2a223          	sw	a1,4(t0)
4817ee:	00c2a023          	sw	a2,0(t0)

而更好的办法是定义为:

#define MMIO_BASE		0x00490000
#define MMIO_MTIME_CTRL         0x00
#defin
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值