首页 > 解决方案 > 使用 %cl 左移

问题描述

假设我有一个二进制数字。1010 是十进制的 10。

我知道左移 1 位本质上是将数字乘以 2。

教科书中有一句话让我很困惑。

salq %cl, %rdx

%rdx是一个数字,%salq是一个左移。我感到困惑的是%cl.

我读过 CL 是 8 位,这是否意味着我乘以 2^8?

标签: assemblyx86bit-shift

解决方案


cl部分寄存器(实际上是寄存器的最低 8 位)rcx包含rdx将被左移的值。它有 8 位长,但移动的量是实际存在的内容:

movb $10, %cl
salq %cl, %rdx ; rdx is shifted 10 bits left.

推荐阅读