旋转的实际用途左/右

时间:2014-11-13 16:12:39

标签: assembly programming-languages

旋转左侧和旋转右侧指令有哪些实际用途?

在我的汇编课程中,我们无法想出一个有用的好例子。

2 个答案:

答案 0 :(得分:4)

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

       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

真正的一点是,这些旋转指令从其他操作数捕获数据的“位”,并允许您与现有数据结合使用。您希望您的机器提供丰富的数据操作原语集,以便您可以进行任意数据混洗。

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

你能否没有这些指示?当然,你的CPU具有图灵功能。

答案 1 :(得分:0)

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