当前位置: 首页 > 知识库问答 >
问题:

为什么ARM区分SDIV和UDIV,而不是ADD,SUB和MUL?

国跃
2023-03-14

如标题中所述,为什么 ARM 指令集仅在除法时区分有符号和无符号?

SDIV和UDIV是可用的,但ADD、SUB和MUL并非如此。

共有1个答案

龙正初
2023-03-14

相同大小的有符号和无符号数字的加法和减法在二进制补码数学(ARM 使用)中产生完全相同的位模式,因此不需要单独的指令

例如,如果我们采用字节大小的值:

0xFC +4 
signed: -4+4 = 0
unsigned: 252 +4 = 256 = 0x100 = 0x00 (truncated to byte)

乘法结果会根据操作数被解释为有符号还是无符号而改变,但是< code>MUL指令只产生结果的低32位,这在两种情况下是相同的。在最近的ARM处理器中,有一些指令可以产生完整的64位结果,这些指令成对出现,就像SDIV和UDIV一样:UMULL,UMLAL,SSMULL,SMLAL:

有符号和无符号长乘法,可选累加,32位操作数,64位结果和累加器。

 类似资料:
  • 关于泛型类型,这可能是一个愚蠢的问题,但我找不到任何好的解释来解释泛型类型中遵循的命名约定。如果有一个类有两个泛型类型;Java程序员通常这样定义它: 为什么不做一些简单的事情,比如: 我只想问为什么要遵循这样的命名惯例?和背后有什么原因吗?或者这个约定来自其他语言(比如c模板)?

  • 如果我想发送消息到谷歌PubSub并使用它的消息。您建议使用Spring cloud GCP库还是只使用Google cloud Java API。 有人能区分这两者吗?或者与谷歌云pubsub库相比,Spring Cloud gcp提供了哪些功能。

  • 问题内容: 各自的优缺点是什么?请建议何时使用一种而不是另一种。 问题答案: 数据存储 发布/订阅是发布者/订阅者平台,不是数据存储。无论是否有订阅者,发布的消息都会消失。 在Redis Streams中,stream是一种数据类型,它本身就是一种数据结构。消息或条目存储在内存中,并保留在那里直到被命令删除。 同步/异步通信 发布/订阅是同步通信。各方需要同时处于活动状态才能进行通信。Redis在

  • 我知道什么是mapPartition转换和map。一些帖子声称mapPartition比map快。在什么情况下,我们使用mapPartition而不是map?mapPartition比map快吗?

  • 我试着用谷歌搜索,但找不到答案。 取自ApacheSpark:map vs mapPartitions? RDD的map和mapPartitions有什么区别 map在每个元素级别运行正在使用的函数,而mapPartitions在分区级别运行该函数。 在这种情况下,什么是元素级别?这只是一行吗?