以下是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 分配给此寄存器位置?任何人都可以指向参考文件吗?
答案 0 :(得分:2)
register uint32_t __regPriMask __ASM("primask");
...是名为__regPriMask
的{{3}}的声明,存储在primask
注册表中。
换句话说,分配给该寄存器变量将设置寄存器primask
的值。