assembly - "shift operates on bits individually"是什么意思?

标签 assembly bit-manipulation mips bitwise-operators shift

我在我的书中读过这句话:

Logical and Shift Instructions Operate on bits individually Unlike arithmetic, which operate on entire word

Use to isolate fields. Either by masking or by shifting back and forth.

这两个句子我完全看不懂。

移位和算术指令都会改变所有位(在某些情况下),而在算术中,位会被逐个相加以计算答案。

那么这部分是什么意思“指令对位单独操作不像算术,它对整个单词进行操作”

我的第二个问题:

我不知道这部分有什么想法,你能给我解释一下吗:

Use to isolate fields. Either by masking or by shifting back and forth.

我的第三个问题:什么是逻辑指令。例如,他的意思是 AND,OR 吗?你能解释更多吗?

最佳答案

逻辑和移位操作通常称为按位操作。它们单独对位进行操作,这意味着每个输出位仅取决于输入中单个固定位位置的位,您可以立即计算该位而不依赖于任何其他位或之前的计算结果

例如在 AND、OR、XOR... output[n](即输出中的第 n 位)由 input1[n] 计算得出>input2[n]。类似地,左移 N 只从 input[i - N] 产生 output[i],而从 input[n] 进行补码(NOT)转换> 到 输出[n]。我正在从 here 获取示例图像这样更容易理解

  • 还有:

    AND operation

  • 左移:

    SHIFT operation

OTOH 加法结果中的每一位都依赖于进位,你必须像这样等待前面的加法操作完成 Sn = An + Bn + Cn

4-bit adder

可以通过预先计算进位来进行更快的加法,例如 carry-lookahead adder 中的一些逻辑。 ,但它仍然比没有依赖项的按位运算更慢并且需要更多的裸片区域。同样,其他算术运算也不能通过单独获取每个输出位来完成。

这是您的第一个和第三个问题。关于第二个

Use to isolate fields Either by masking or by shifting back and forth.

表示他们习惯于获取 bit fields通过使用 AND 进行掩码(即只让该字段中的位通过,过滤掉掩码为零的位置的位),或将位移出为零并移回其原始位置

进一步阅读:

关于assembly - "shift operates on bits individually"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54166507/

相关文章:

assembly - 如何在 x86 程序集中读写网卡?

c - 使用指针而不是索引更新数组

c - GDB 打印值相对于寄存器

binary - 计算 Redshift 列中每个位位置中 '1' 值的数量

c - C语言到MIPS的解释

bit-manipulation - 将负符号添加到无符号的更快方法

c - 使用按位运算乘以 3

linux - 准备加载内核

c++ - 在 DOS 7.x 中获取大型驱动器结构信息

gcc - 为什么使用 arm-linux-gnueabi-gcc 编译时堆栈指针比堆栈帧大小向下移动 4 个字节?