ARM armcc specific functions ARM 汇编指令功能

Posted 旭日初扬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ARM armcc specific functions ARM 汇编指令功能相关的知识,希望对你有一定的参考价值。

/* ###################  Compiler specific Intrinsics  ########################### */   这些编译器的具体特性

#if defined ( __CC_ARM   ) /*------------------RealView Compiler -----------------*/      
/* ARM armcc specific functions */                 ARM 编译器特有功能

#define __enable_fault_irq                __enable_fiq                                                                使能中断
#define __disable_fault_irq               __disable_fiq                                                                失能中断

#define __NOP                             __nop                                                                               空指令,用来延时。因为空指令也要占用一次指令周期.


#define __WFI                             __wfi

  • WFI进入则可由任意中断唤醒
  • WFE进入则由事件唤醒
  • WFI = wait for interrupt 等待中断,即下一次中断发生前都在此hold住不干活
  • WFE = wait for event 等待事件,即下一次事件发生前都在此hold住不干活

#define __WFE                             __wfe


#define __SEV                             __sev         多处理器环境中向所有的处理器发送事件(包括自身)。在符合CMSIS的设备驱动库中,可以使用“__SEV()”实现该操作


#define __ISB()                           __isb(0)       指令同步屏障,清除流水线并且确保在新指令执行时,之前的指令都已经执行完毕。在符合CMSIS的设备驱动库中,可以使用“__ISB”函数实现该操作


#define __DSB()                           __dsb(0)     数据同步屏障,确保在下一条指令开始执行前,所有的存储器访问已经完成。在符合CMSIS的设备驱动库中,可以使用“__DSB”函数实现该操作


#define __DMB()                           __dmb(0)    数据存储器屏障,确保在新的存储器访问开始之前,所有的存储器访问已经完成。在符合CMSIS的设备驱动库中,可以使用“__DMB”函数实现该操作


#define __REV                             __rev


#define __RBIT                            __rbit


#define __LDREXB(ptr)                     ((unsigned char ) __ldrex(ptr))


#define __LDREXH(ptr)                     ((unsigned short) __ldrex(ptr))


#define __LDREXW(ptr)                     ((unsigned int  ) __ldrex(ptr))


#define __STREXB(value, ptr)              __strex(value, ptr)


#define __STREXH(value, ptr)              __strex(value, ptr)


#define __STREXW(value, ptr)              __strex(value, ptr)

 

以上是关于ARM armcc specific functions ARM 汇编指令功能的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 armcc 为 ARM Cortex M3 创建没有硬件异常处理程序的映像

mdk Arm Compiler V6注意事宜

keil_v5生成.bin文件方法

ARM交叉编译工具链分类说明

ARM Scatter文件中的符号

keil5如何生成axf文件