【问题标题】:Switching roles of EDI and ESI registers切换 EDI 和 ESI 寄存器的角色
【发布时间】:2016-12-13 10:06:46
【问题描述】:

EDI 和 ESI 的角色可以互换吗?

例如,EDI 是否可以包含指向数组的指针,而我们只打印出数组中的每个值/字符?

【问题讨论】:

  • 通常在寄存器中切换值比修改其余代码更容易。如果您碰巧遇到需要esi/edi 的情况,那么xchg esi,edi 将解决这个问题。这不是一个快速指令,所以通常你可以通过提前计划代码的寄存器使用来避免这种情况,并编写剩余的代码以在没有额外的 xchg/mov 指令的情况下工作,将中间结果直接保存在寄存器中,这些寄存器将被下一个代码拾取......如果可能...如果不是,请使用xchg 或额外的mov

标签: assembly x86 cpu-registers


【解决方案1】:

对于字符串指令,如MOVSB,不能切换(R|E)SI和(R|E)DI的角色。源寄存器和目标寄存器由指令本身隐含,并且本质上是硬编码的。

在其他任何地方,您都可以适当地调整您的代码以使用一个寄存器而不是另一个寄存器。

【讨论】:

    猜你喜欢
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 2020-11-27
    • 2018-03-06
    相关资源
    最近更新 更多