gpt4 book ai didi

assembly - 为什么设置小于 ALU 操作

转载 作者:行者123 更新时间:2023-12-04 18:13:44 24 4
gpt4 key购买 nike

为什么是 slt被认为是 ALU 操作?我认为它只会做一个减法然后从 ALU 得到 *Z*ero 输出?

ALU 控制线 |功能
-------------------+-------------------
0000 |和
0001 |或者
0010 |添加
0110 |减去
0111 |设置小于

或者如果 A - B 的结果是 ALU 应该输出 1 (在 slt $t1, A, B 中)是负数。

最佳答案

如果 A 小于 b,则应该输出 1,否则输出 0。这通常需要计算 A - B,您需要 ALU。

现在,如果它只是计算 A - B 的符号位这将是多余的,但请考虑 A = -2147483648 = 0x80000000 的情况和 B = 1 = 0x00000001 ,这里的减法结果将是 0x7fffffff = 2147483647 ,即使 A < B 也没有设置最高有效位.

由于该表来自“Patterson, David A.;Hennessy, John L.:计算机组织与设计”,我将向您推荐第 3 章,特别是处理“加法和减法”的小节(第 2 版中的 3.3, 3.2 中的 4)。它有一个处理溢出/下溢的表,可以在其中查找极端情况。

还要记住 ALU 结果是 32 位,所以即使结果只是减法结果的符号位,它仍然需要不同的 ALU 操作代码来表示应该返回与结果位连接的 31 个零而不是完整的减法结果。

您可能指的“零”行是 - 在书中讨论的架构中 - IIRC 仅用于与分支相等/分支不相等相关的比较。 SLT/SLTI在手上将其结果存储在寄存器中。

关于assembly - 为什么设置小于 ALU 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7858217/

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