赞
踩
今天又受教了,在汇编中对于一条指令的计较,代表了更高的性能和更小的 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。