gpt4 book ai didi

assembly - ARM算术加法和标志更新

转载 作者:行者123 更新时间:2023-12-02 21:57:54 28 4
gpt4 key购买 nike

我正在阅读 JR Gibson 的 ARM 汇编书,第 5 章。对整数的解释 ADDSUB说明表格给出了计算结果后标志更新的信息。

我无法理解的是 2 个整数的无符号整数加法的标志更新 A , B哪里AB是“不都是 0”,结果是 2^31-1 < result < 2^32 (即 0x7FFFFFFF0x100000000 之间)

它指出上述结果会产生标志 N=1 , Z=0 , C=0 , V=X (不关心)被设置并且指令助记符扩展被解释为

EQ = No, NE = Yes, CS = No, CC = Yes, MI = Yes, PL = No, VS, VC = X, HI = No, LS = Yes, LT, GT, LE = X

为什么无符号加法导致 32 位范围内的值会导致 N 的设置位(因此 MILSYes )

我期待的是N可以设置标志,因为第 31 位是 1 (从位 0 开始计数),但结果无论如何都是正数(即 PL = Yes ,因为它在范围 2^31-1 ~ 2^32 内)。

我是不是不明白这里的一些事情?

最佳答案

N 标志始终设置为结果的位 31。处理器并不关心您是否添加或减去有符号或无符号数字 - 两种情况下生成的位模式是相同的。同样,PL/MI 后缀仅检查 N 标志;他们并不关心您是否考虑有符号或无符号的数字。

符号对于乘法和除法很重要,这就是为什么这些指令有两个助记符。

关于assembly - ARM算术加法和标志更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6573882/

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