Assembly 左/右旋转进位的实际用途

Assembly 左/右旋转进位的实际用途,assembly,programming-languages,Assembly,Programming Languages,“向左旋转进位”和“向右旋转进位”指令有哪些实际用途 在我的汇编类中,我们无法提供一个很好的示例来说明这是否有用。如果要将位从一个操作数移到另一个操作数: SHL EAX, 1 ; move sign bit of EAX ... RCL EDX ; into LSB of EDX 如果要反转EAX中的位,请执行以下操作: MOV ECX, 32 loop: SHR EAX, 1 RCL EDX

“向左旋转进位”和“向右旋转进位”指令有哪些实际用途


在我的汇编类中,我们无法提供一个很好的示例来说明这是否有用。

如果要将位从一个操作数移到另一个操作数:

       SHL  EAX, 1 ; move sign bit of EAX ...
       RCL  EDX    ; into LSB of EDX
如果要反转EAX中的位,请执行以下操作:

          MOV  ECX, 32
   loop:  SHR EAX, 1
          RCL EDX
          DEC  ECX
          JNE  LOOP
   ; EDX == EAX with bits reversed here
真正的问题是,这些旋转指令从其他操作数捕获数据的“位”,并允许您与现有数据组合。您希望您的机器提供一组丰富的数据操作原语,以便可以执行任意数据洗牌

话虽如此,在我的一个应用程序中搜索大约30000个装配源代码行时,我只看到3或4个用途。但是,我没有使用英特尔指令集中的某些其他指令。很少使用并不意味着无用


没有这些指示你能活下去吗?当然,您的CPU具有图灵功能。

这些指令在图形驱动程序中最有用。想象一下16色标准VGA分辨率,将0到15的数字分成4个显示平面。

当我搜索“RCL使用”和“旋转进位向左使用”时,谷歌可能的副本显示为空。很抱歉,它们在历史上比现在更有用。对于单位移位,可以级联移位一个与内存大小相同的数字。不过一次只能吃一点。它们对于可以玩旋转的游戏也很有用,也许可以保存指令或指令字节,但优化器实际上必须注意寻找。并且对于将任何位放入进位进行后续比较非常有用,这可能会再次节省一些指令字节,而且正如Ira提到的那样,每次将某个位反转一位。是的,我正在想象所有这些。。。没有发现明显的联系。如果您暗示寄存器中的位字段可以通过移位进行操作,那么您可以减少间接性。OP询问“旋转进位左指令和旋转进位右指令的一些实际用途是什么?”我用不到30000行写的一个图形驱动程序至少有50个RCR和RCL。我会接受你的答案,因为没有人给出真实世界的实例。我有真实世界的实例。在我的例子中,解释它们很困难,因为代码很复杂,但这些说明在这些示例中很有用。我展示了一些通用的例子。