【问题标题】:x86 assembly, ROR rotation, count from register or memoryx86 汇编,ROR 循环,从寄存器或内存计数
【发布时间】:2012-12-25 21:37:56
【问题描述】:

我在 x86 程序集中使用 nasm 编写代码。我希望能够做到这一点(在 EAX 中是旋转次数,或在 [EBP + 12] 下):

ror ESI, EAX ;count- register
ror ESI, DWORD [EBP + 12] ;count- memory

但这是不可能的。 ror 只接受像

这样的直接常量
ror ESI, 4  ; four right rotations

我不喜欢循环:

loop:  
ror ESI, 1
sub EAX, 1
cmp EAX, 0
jg loop

这个问题可能有更好的解决方案。

【问题讨论】:

    标签: assembly x86 nasm


    【解决方案1】:

    我发现 ROR 只适用于 CL 寄存器,例如:

    ror ESI, CL
    

    【讨论】:

    • Intel 和 AMD 都将 CL 记录为 ROR 的有效参数,估计没人再阅读文档了。
    猜你喜欢
    • 2015-11-01
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 2021-03-25
    相关资源
    最近更新 更多