汇编中的冒号什么意思,在FreeRTOS代码中有这样一段,请问什么意思

_KINGKANG_ 2019-01-10 03:25:00
请问
::"i"(configMAX_SYSCALL_INTERRUPT_PRIORITY):"r0"

是什么意思

#define portSET_INTERRUPT_MASK() \
__asm volatile \
( \
" mov r0, %0 \n" \
" msr basepri, r0 \n" \
::"i"(configMAX_SYSCALL_INTERRUPT_PRIORITY):"r0" \
)

...全文
485 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
_KINGKANG_ 2019-01-11
  • 打赏
  • 举报
回复
引用 4 楼 早打大打打核战争 的回复:
具体什么意思你得看它的文档。不过从它的注释#define portSET_INTERRUPT_MASK()来看,这两句是向某端口写一个中断掩码 configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY是个常量,我查了一下,定义是: #define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 所以这两句 mov r0, %0 msr basepri, r0 实际是向basepri这个配置寄存器写入了一个5
请问这里的"i"和下面的"=r""r"是什么意思呢
_KINGKANG_ 2019-01-11
  • 打赏
  • 举报
回复
__attribute__( ( always_inline ) ) static __INLINE uint8_t __CLZ(uint32_t value)
{
  uint8_t result;
  
  __ASM volatile ("clz %0, %1" : "=r" (result) : "r" (value) );
  return(result);
}
跟c语言输出差不多的
_KINGKANG_ 2019-01-11
  • 打赏
  • 举报
回复
引用 4 楼 早打大打打核战争 的回复:
具体什么意思你得看它的文档。不过从它的注释#define portSET_INTERRUPT_MASK()来看,这两句是向某端口写一个中断掩码 configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY是个常量,我查了一下,定义是: #define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 所以这两句 mov r0, %0 msr basepri, r0 实际是向basepri这个配置寄存器写入了一个5
十分感谢大佬的帮助,茅舍顿开。可否这样理解 %后面表示一个的变量 :::里面就是为变量设置参数。 大佬有没有解释该语法的资料拜读一下。
  • 打赏
  • 举报
回复
具体什么意思你得看它的文档。不过从它的注释#define portSET_INTERRUPT_MASK()来看,这两句是向某端口写一个中断掩码
configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY是个常量,我查了一下,定义是:
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5
所以这两句
mov r0, %0
msr basepri, r0
实际是向basepri这个配置寄存器写入了一个5
_KINGKANG_ 2019-01-10
  • 打赏
  • 举报
回复
引用 1 楼 早打大打打核战争 的回复:
:输出操作数 :输入操作数 :改变的寄存器
大佬回答的很专业啊,请问这个语句有什么作用
_KINGKANG_ 2019-01-10
  • 打赏
  • 举报
回复
大佬回答的很专业啊,这个语句有什么作用
  • 打赏
  • 举报
回复
:输出操作数 :输入操作数 :改变的寄存器

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧