GCC4 - ARMv5寄存器分配

时间:2012-05-16 13:17:46

标签: assembly arm gcc4

有没有办法要求GCC以与该架构的标准ABI不同的方式生成使用寄存器的代码。

我正在使用ARMv4芯片(LPC2000),我需要快速中断更快。

我有一个FIQ例程,但是我必须将r0..r7存储在堆栈中,这似乎是无意义的FIQ模式,因为它是自己的寄存器组R8..r15。我希望使用它们,并保存16个指令周期,用于推送和弹出堆栈。

在任何人陈述明显之前:用汇编语言重写FIQ处理程序,是的我知道我可以这样做,这个问题更具体。

是否有#pragma或__attribute__或开关告诉GCC4更改它在函数中分配寄存器的顺序?

1 个答案:

答案 0 :(得分:3)

一个。当您使用interrupt pragma声明函数时,正确优化:

void f () __attribute__ ((interrupt ("FIQ")));

来源:http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html#Function-Attributes

B中。 但是我发现一个开放的错误报告,当前没有优化相关寄存器的推送/弹出。该错误报告已被归类为“错过优化”,自2011年6月确认以来一直开放。

来源:http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48429

相关问题