当前位置:   article > 正文

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

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

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

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

  1. #define MEM_MTIME_CTRL 0x00490000
  2. #define MEM_MTIME_DIV 0x00490004
  3. #define MEM_MTIME 0x00490008
  4. #define MEM_MTIMEH 0x0049000C
  5. #define MEM_MTIMECMP 0x00490010
  6. #define MEM_MTIMECMPH 0x00490014

汇编中如下操作:

  1. li t0, MEM_MTIMECMP
  2. sw a1, 4(t0)
  3. sw a2, 0(t0)

编译器转为:

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

而更好的办法是定义为:

  1. #define MMIO_BASE 0x00490000
  2. #define MMIO_MTIME_CTRL 0x00
  3. #defin
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号