デフォルトでは、大きなタイプ(4バイトより大きい)はEABIで8バイトにアラインされます。これは、function(u32, u64)
が呼び出されると、u32がにr0
なり、u64がとに分割されr2
て未使用r3
のままになることを意味します。r1
代わりに、コンパイラに4バイトにアラインさせるにはどうすればよいですか?私はこれ(ABIを壊す)などの結果を理解していますが、私は本当に気にしません。カーネル構成でOABIを有効にすると、ARMv7のサポートが無効になるため、OABIの使用を提案しないでください。
4バイトのアラインメントでは、u32は引き続き使用されますr0
が、u64はとの間で分割されr1
ますr2
。