如何理解这几行内嵌的_asm_powerPC 代码

问题描述

我正在将一些遗留代码迁移到 vxWorks 7.0。 vxWorks 6.9 代码在 ISR 中有以下几行程序集。如果可能,我正在逐行寻求理解以下代码。我对 PPC 汇编和 GNU 的内联语法完全没有经验

__asm__(
    "mfdec 3 \n\t"       ; I think this may be R3 = DEC timer val
    "my_loop:"           ; simple label
    "add. 3,%0,3 \n\t" ; ?? Add %0+R3=> R3 with Rc=1. What is %0?  The ISR is void isr(void) type.
    "ble my_loop \n\t"   ; branch if <= to my_loop
    "mtdec 3 \n\t"       ; move R3 content into DEC
    :                    ; from here down I have no idea
    : "r" (val)
    : "3","cc"
);
  1. 什么是 %0?
  2. asm 模板字符串后面的“:”是什么意思?
  3. 其他行(没有注释)是什么,即:通过“3”、“cc”到底在做什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)