第九章 C程序在ARM上的优化.pptVIP

  • 2
  • 0
  • 约1.23万字
  • 约 47页
  • 2019-10-13 发布于山东
  • 举报
* * * * * * * * * * * * * int int short * * * * ----------- 内嵌汇编注意事项 (1)必须小心使用物理寄存器 如R0~R3、PC、LR和CPSR中的N、Z、C和V标志位,因为计算汇编代码中的C表达式时,可能会使用这些物理寄存器,并会修改N、Z、C和V 标志位。 例如: __asm { MOV var,x ADD y,var,x/y } 计算x/y时R0会被修改。内嵌汇编器探测到隐含的寄存器冲突就会报错。 内嵌汇编 如何在C语言内嵌汇编语言 ----------- 内嵌汇编注意事项 (2)不要使用寄存器代替变量 例如: int bad_f(int x) // x存放在R0中 { __asm { ADD R0,R0,#1 //发生寄存器冲突,实际上x的值没有变化 } return(x); } 尽管根据编译器的编译规则似乎可以确定R0对应x,但这样的代码会使内嵌汇编器认为发生了寄存器冲突。 内嵌汇编 如何在C语言内嵌汇编语言 ----------- 内嵌汇编注意事项 (3)LDM和STM指令的寄存器列表中只允许使用物理寄存器 内嵌汇编可以修改处理器模式、协处理器模式以及FP、SL、SB等APCS

文档评论(0)

1亿VIP精品文档

相关文档