ARM初探–alias
alias是为老函数,取一个新的名字!
attribute关键字来描述函数,变量和数据类型的属性,用于编译器对源代码的优化
#include <stdio.h>
int __Hard_Fualt()
{
printf("my func = %s\n",__FUNCTION__);
return 0;
}
int myFun() __attribute__((alias("__Hard_Fualt")));
int main()
{
myFun();
return 0;
}
下面是ARM Cortex-M3中应用alias的一段代码能够简化,程序的编写进程!
void NMI_Handler(void) __attribute((alias("HardFault_Handler"))); //alias指令别名
void MemManage_Handler(void) __attribute((alias("HardFault_Handler")));
void BusFault_Handler(void) __attribute((alias("HardFault_Handler")));
void UsageFault_Handler(void) __attribute((alias("HardFault_Handler")));
void SVC_Handler(void) __attribute((alias("HardFault_Handler")));
void DebugMon_Handler(void) __attribute((alias("HardFault_Handler")));
void PendSV_Handler(void) __attribute((alias("HardFault_Handler")));
经过使用alias修饰之后,只需定义一个NMI_Handler()函数即可,其它的函数调用的时候就会调用NMI_Handler()函数;
void HardFault_Handler(void)
{
__disable_irq();
__set_MSP(__Vectors);
LEDS_SETUP();
{
register int count;
for (count = 0; count < 5; count++)
{
LedRunningOn();
Delay_ms(250);
LedRunningOff();
LedConnectedOn();
Delay_ms(250);
LedConnectedOff();
Delay_ms(1000);
}
}
NVIC_SystemReset();
}
本文探讨了在ARM Cortex-M3处理器中使用alias指令优化代码的方法。通过将多个函数名映射到同一个函数实现上,简化了代码编写,提高了效率。示例展示了如何使用attribute关键字创建函数别名。
3840

被折叠的 条评论
为什么被折叠?



