【问题标题】:How are values compared when appending a dot to an instruction将点附加到指令时如何比较值
【发布时间】:2014-12-18 10:53:43
【问题描述】:

我对组装尤其是 PowerPC 组装比较陌生,所以请多多包涵。我环顾四周,但还没有真正找到一个准确的答案,即在将点附加到指令时如何比较值,例如:

clrlwi. r0, r0, 29   # clear left word immediate

这是将r0 的原始值与清除位后计算的值进行比较,还是相当于编程语言中的if (variable)?在this page 上,它所说的只是附加一个点相当于

cmpwi rD, 0

但我不清楚这将寄存器与什么进行比较,因为它们的语法不能准确显示值是寄存器编号还是立即整数...

【问题讨论】:

    标签: assembly powerpc


    【解决方案1】:

    点表示CR0 标志(CR 的第 0..3 位)将根据指令的结果进行更新。

    cr0 用于定点计算指令的结果,该指令使用非立即数操作数(有少数例外)。计算结果与零进行比较,并设置适当的位(负、零或正)。
    要在计算指令中表明您希望它设置cr0,您只需添加一个句点 (.) 到指令的末尾。 例如,add 4, 5, 6 将寄存器 5 添加到寄存器 6 并将结果存储在寄存器 4 中,而不在 cr0 中设置任何状态位。然而,add. 4, 5, 6 做同样的事情,但根据计算值设置cr0 中的位。

    CR0位:

    0: Negative (LT) - This bit is set when the result is negative
    1: Positive (GT) - This bit is set when the result is positive (and not zero)
    2: Zero (EQ)     - This bit is set when the result is zero
    3: Summary overflow (SO) - This is a copy of the final state of XER[SO] at completion of the instruction
    

    (source)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-30
      • 1970-01-01
      • 1970-01-01
      • 2018-06-24
      • 2015-06-24
      • 2020-07-01
      • 1970-01-01
      相关资源
      最近更新 更多