ARM到C调用约定,NEON寄存器保存

Pav*_*l P 14 arm abi neon

有一个类似的帖子涵盖了常规寄存器.NEON寄存器怎么样?据我记得,函数调用必须保留上半部分或下半部分寄存器.我无法在任何地方找到这些信息,有人可以澄清一下吗?

谢谢

AAPCS,§5.1.1核心寄存器:

  • r0-r3是参数和临时寄存器; r0-r1也是结果寄存器
  • r4-r8是被调用者保存寄存器
  • r9可能是一个被调用者保存寄存器(在AAPCS的某些变体上它是一个特殊的寄存器)
  • r10-r11是被调用者保存寄存器
  • r12-r15是特殊寄存器

AAPCS,§5.1.2.1VFP寄存器使用约定(VFP v2,v3和高级SIMD扩展):

  • 必须保留s16-s31(d8-d15,q4-q7)
  • s0-s15(d0-d7,q0-q3)d16-d31(q8-q15)不需要保留

ken*_*ytm 13

AAPCS,§5.1.2.1:

  • 必须保留s16-s31(d8-d15,q4-q7)
  • s0-s15(d0-d7,q0-q3)d16-d31(q8-q15)不需要保留

  • arm64的惯例可以在http://stackoverflow.com/a/29603040/224671中找到. (2认同)