汇编inc为什么不影响cf_为什么INC和DEC指令不会影响进位标志?

为了理解为什么你可能需要记住当前具有32位和64位值的“x86”处理器,它们开始成为更受限制的8位机器,回溯到英特尔8008处理器。 1973年,我还记得(唉)!)。

在那个世界上,寄存器是宝贵的和小的。你需要增加/减少用于各种目的,最常见的是循环控制。许多循环涉及到“多精度算术”(例如,16位或更多!)通过inc/dec设置Z位,可以使用它们很好地控制循环;通过坚持循环控制指令不改变进位位,进位在整个循环迭代中被保留,并且可以实现多精度运算而无需编写大量代码来记住进位状态。

这工作得很好,一旦你习惯了丑陋的指令集。

在更大的字大小的更现代的机器上,你不需要这么多,所以INC和DEC可以在语义上等同于ADD ...,1等等。实际上,当我需要进位设置: - }

大多数情况下,我远离INC和DEC走了,因为他们做的部分条件代码更新,这样就可以在管道中引起滑稽的摊位,和ADD/SUB没有。所以在哪里不重要(大多数地方),我使用ADD/SUB来避免摊位。我只在保持代码小的时候才使用INC/DEC,例如,适合一个或两个指令的大小足够重要的高速缓存行。这可能是毫无意义的纳米[字面上!] - 优化,但我在编码习惯上很老派。

我的解释告诉我们为什么INC/DEC设置零位。对于INC/DEC为什么设置符号(以及奇偶校验位),我没有特别的解释。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值