assembly - 使用 %cl 左移
问题描述
假设我有一个二进制数字。1010 是十进制的 10。
我知道左移 1 位本质上是将数字乘以 2。
教科书中有一句话让我很困惑。
salq %cl, %rdx
%rdx
是一个数字,%salq
是一个左移。我感到困惑的是%cl
.
我读过 CL 是 8 位,这是否意味着我乘以 2^8?
解决方案
cl
部分寄存器(实际上是寄存器的最低 8 位)rcx
包含rdx
将被左移的值。它有 8 位长,但移动的量是实际存在的内容:
movb $10, %cl
salq %cl, %rdx ; rdx is shifted 10 bits left.
推荐阅读
- vagrant - 如何使用 Vagrant 2.2.6 安装 vagrant-winnfsd v1.3.1 插件?
- python - Python:测试和设置不运行
- java - 在 GetRequest 中使用 2 个参数的 SQL 查询
- android - 如何在屏幕上按比例显示 4 个图像
- scikit-learn - 如何正确拟合 MultiLabelBinarizer?
- c# - 检索 Azure DevOps REST API 5.1 的访问令牌
- node.js - 如何使用 Mocha 为具有 async await 和 try catch 的函数编写适当的测试?
- cron - 每 13 天计划触发 Azure 管道
- mysql - Couldn't get the exact set of data from multiple tables when i write a mysql query
- javascript - 如何使用 Javascript 或 Lodash 搜索嵌套对象数组