需要将CMSIS中的ARM Cortex-M3汇编指令解释为__set_PRIMASK

时间:2014-05-29 19:38:19

标签: gcc assembly cortex-m3

以下是ARM CMSIS库中的代码段,用于设置 PRIMASK 寄存器的值。

/**
 * @brief  Set the Priority Mask value
 *
 * @param  priMask  PriMask
 *
 * Set the priority mask bit in the priority mask register
 */
static __INLINE void __set_PRIMASK(uint32_t priMask)
{
   register uint32_t __regPriMask         __ASM("primask");
   __regPriMask = (priMask);
}

我不理解的部分是内联汇编指令

__ASM("primask");

我没有通过这种方式阅读有关按名称寻址寄存器的任何内容。如何在没有操作码的情况下进行内联汇编?这是否将 __ regPriMask 分配给此寄存器位置?任何人都可以指向参考文件吗?

1 个答案:

答案 0 :(得分:2)

register uint32_t __regPriMask __ASM("primask");

...是名为__regPriMask的{​​{3}}的声明,存储在primask注册表中。

换句话说,分配给该寄存器变量将设置寄存器primask的值。