首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCC4 - ARMv5寄存器分配

GCC4 - ARMv5寄存器分配
EN

Stack Overflow用户
提问于 2012-05-16 21:17:46
回答 1查看 253关注 0票数 1

有没有办法让GCC生成代码,以一种不同于该架构的标准ABI的方式使用寄存器。

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

我有一个FIQ例程,但我必须将r0..r7存储在堆栈上,这对于FIQ模式来说似乎没有意义,因为它有自己的寄存器组R8..r15。我想用它们来代替,并节省16个指令周期,用来将东西从堆栈中推入和弹出。

在任何人说出显而易见的事情之前:用汇编语言重写FIQ处理程序,是的,我知道我可以做到,这个问题更具体。

是否有一个#杂注、__attribute__或开关来告诉GCC4更改它在函数中分配寄存器的顺序?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-16 21:51:21

答:当你用interrupt编译指示声明函数时,这应该被正确地优化:

代码语言:javascript
复制
void f () __attribute__ ((interrupt ("FIQ")));

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

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10619388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档