gpt4 book ai didi

assembly - x86 RCL/RCR 指令的实际应用是什么?

转载 作者:行者123 更新时间:2023-12-04 19:26:19 25 4
gpt4 key购买 nike

我对 感兴趣实际应用 ,即使它们按现代标准已经过时。

有类似的问题,关于 ROL 和 ROR here ,但它并没有真正回答 RCL/RCR。

我可以想出一些 RCL 的应用程序,带有操作数 1 的 RCR(即一些 LFSR),但我想不出任何 具有非 1 个操作数的合理应用程序 .

所以有人可以启发我吗?

附言示例代码非常受欢迎。

更新 1 :如 Peter Cordes在下面的评论中提到,一个(非常明显的)应用程序是 shrd/shld。 (IIRC rcl/rcr 指令已经在 8080 中)

也许上面的“非 1”不清楚,但请注意,我最感兴趣的是用法,其中操作数是 != 1 ( RC(L|R) REG, c 与 c 要么 > 1 要么 == cl )。

最佳答案

在移位运算中,这些指令与加进位( adc )或加进位减法( sbb )指令具有相同的作用:

当处理大于 CPU 寄存器最大大小的数字时,它用作第二条指令,因此必须使用多个操作来处​​理该数字。

示例:在 386 CPU 上,您可以使用一条指令执行 32 位操作。但是,您可能想要处理 320 位整数。

假设我们有一个 4 位 CPU,我们想对一个 16 位整数执行“算术右移”( sar )操作:

Integer: ABCDEFGHIJKLMNOP  (A-P = some bits that may be 1 or 0)

Operation on a 16 bit CPU:

ABCDEFGHIJKLMNOP (SAR 1) -> AABCDEFGHIJKLMNO, CF = P

Operation on a 4 bit CPU:

ABCD (SAR 1) -> AABC, CF = D
EFGH, CF = D (RCR 1) -> DEFG, CF = H
IJKL, CF = H (RCR 1) -> HIJK, CF = L
MNOP, CF = L (RCR 1) -> LMNO, CF = P

So the final result on the 4-bit CPU is AABCDEFGHIJKLMNO, CF = P

当然,同样的例子也适用于 64 位 CPU 上的 256 位数字......

另请注意:

使用 add/adc , sub/sbcshl/rcl我们从低位开始,然后继续高位。但是,使用 shr/rcrsar/rcr恰恰相反。

关于assembly - x86 RCL/RCR 指令的实际应用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55543370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com