为什么在零是零的情况下,在减法期间设置了携带标志? 在我为自己的算术和逻辑操作写自己的小图书馆的那一刻。为了提高性能,我决定在组装中实施一些功能。所以我在这里...

问题描述 投票:0回答:2

CF(位0)携带标志 - 设置算术操作会产生随身携带的或从结果中最明显的位中借来的;否则清除。此标志指示 未签名的算术。它也用于多精确算术中。

assembly x86 flags
2个回答
21
投票

对于(不必要的)视觉线索,在这个4-5的操作中,这是第二个借用的红色,它设置了CF

如果您从零减去,那么对于任何数字而言,自然而然地来了,但是零本身,您始终拥有CF集,因为子Trahend至少具有一个位。


最终,某些说明可让您更改符号位,而不会影响CF(例如,请参见逻辑操作或

neg

的行为)。

我们从小学知道A -B = A +(-b)。 这就是逻辑的方式,我们不减去添加负面。 我们还从初学者编程课程中知道,两台补充的课程可以使您倒置并添加一个。 a -b = a +(〜b) + 1。我们也从小学中知道携带的概念。 9+3 = 2携带一个。 在二进制中相同,有两个操作数可以使1 + 1 = 0携带一个。 因此,逻辑中的每一列都需要随身携带。 每个都有两个钻头的三个位,加上两个操作数,携带并执行,结果取消了。 由于这些逻辑斑点中的每一个都有一个输入位,因此携带,第一次携带的正常添加为零,但是对于减法,我们可以将其携带为1,然后倒下第二个操作数以获得A + B = a +(〜 b) +1Borrow and CF 如果您通过一些简单的示例进行工作,或者最好尝试自己的操作数组合,则是添加的。 您会发现没有签名或未签名的添加(或减法),《 Twos的美》编码的美。 确定所有这些,减去是添加的,加上我们在未签名的溢出上进行进行,签名的溢出位是当携带进口和携带MSBIT不匹配时,通常表示为V标志。 现在,一些架构,因为它们已经在进来的途中颠倒了B操作数,并且在途中进来,它们会在出路时倒转。 有些不。 因此,您必须查看自己的特定体系结构,以了解该执行方式是否被认为是无符号的额外溢出,还是借用。 或不借任何东西。

零减去并不总是会进行加法。


0b000 - 0b111 0001 000 + 000 ===== 001

添加量为零。  您的体系结构可能会选择以这种方式离开它,或者它可以选择将其倒置并将其称为借用。

与建筑家庭有关。 所有的X86或所有手臂都可能永远以同样的方式继续这样做。 但是没有理由期望手臂和mips,x86和xyz都以相同的方式做到这一点。 从术语的角度来看,将其定义为借用是有意义的。


9
投票

HADRYMENE LMOI MN CHMNL DVVHGI MBL MBL MN BI或RHNBO FVGJU MN KANHA KANHA SHRAMA YUVAJSHRAMA BHVAVN BHVAVN SHRAMA SHRAMA SHRAMA SHRAMA GAHARAMA SHARMA MBLOF5000

100

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.