【问题标题】:Indirect addressing with + and []使用 + 和 [] 间接寻址
【发布时间】:2013-04-05 11:55:28
【问题描述】:

我对 asm 的东西有点陌生。查看从 C 为 TI 的 C28x CPU 生成的 asm 并获得指令

MOVL *+XAR4[0],ACC

我知道它是一个长操作数移动指令,它将累加器中的值放入......什么指向的位置?

XAR4 是辅助寄存器 4,但 '+' 和 '[0]' 有什么作用呢?他们会需要额外的周期吗?

【问题讨论】:

    标签: assembly addressing-mode


    【解决方案1】:

    来自“TMS320C28x DSP CPU 和指令集”的第 5.6 节“间接寻址模式” 参考指南”

    *+XARn[3bit]
    32bitDataAddr(31:0) = XARn + 3bit
    Note: The immediate value is treated as an unsigned 3-bit value.
    

    所以它将ACC存储在XAR4(具体为XAR4+0)指向的内存位置。

    当 3 位偏移量为 0 时,可以省略:

    The assembler also accepts ”*XARn” as an addressing mode.
    This is the same encoding as the ”*+XARn[0]” mode
    

    【讨论】:

    • 谢谢,但我仍然不确定这与 MOVL *XAR4,ACC 有何不同??
    • @Toby:这也包含在同一个文档中。查看我的编辑。
    • 谢谢。现在这让我想知道为什么会生成以 *+XARn[0] 方式而不是首先以 *XA​​Rn 方式执行的代码;)
    • 啊,总结一下,位寻址的原因是*XARn是一个结构(成员连续存储)所以*XAR4[0]是第一个成员,*XAR4[1]是第二个会员等。棒棒哒!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 2015-12-02
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多