加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

为什么X86提供了一对分割和乘法指令?

发布时间:2020-12-16 05:31:17 所属栏目:百科 来源:网络整理
导读:我注意到,unsigned int和int共享相同的指令进行加减.但是为整数除法提供idivl / imull,并且对于unsigned int提供divl / mull.我可以知道这个的根本原因吗? 解决方法 根据您的参数是签名还是无符号,乘法或除法的结果不同. 这真的是两个补码的魔力,允许我们使
我注意到,unsigned int和int共享相同的指令进行加减.但是为整数除法提供idivl / imull,并且对于unsigned int提供divl / mull.我可以知道这个的根本原因吗?

解决方法

根据您的参数是签名还是无符号,乘法或除法的结果不同.

这真的是两个补码的魔力,允许我们使用相同的操作进行有符号和无符号加法和减法.在其他表示方式中不是这样 – 一个补码和符号大小都使用与无符号算术不同的加法和减法算法.

例如,对于32位字,-1表示为0xffffffff.对此,您将获得有符号和无符号版本的不同结果:

Signed: -1 * -1 = 1 = 0x00000000 00000001
Unsigned: 0xffffffff * 0xffffffff = 0xfffffffe 00000001

请注意,结果的低字是一样的.在不给高位的处理器上,只需要一个乘法指令.在PPC上,有三个乘法指令 – 一个用于低位,另一个用于高位,取决于操作数是有符号还是无符号.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读