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

16位处理器如何具有4字节大小的长整数?

发布时间:2020-12-16 10:23:15 所属栏目:百科 来源:网络整理
导读:我对16位CPU上的long int的大小有疑问.看看它的架构: 没有寄存器超过16位长.那么,long int怎么会超过16bits.事实上,根据我的任何处理器,数据类型的最大大小必须是通用寄存器的大小.我对吗? 解决方法 是.事实上,C和C标准要求sizeof(long int) = 4. * (在这
我对16位CPU上的long int的大小有疑问.看看它的架构:

没有寄存器超过16位长.那么,long int怎么会超过16bits.事实上,根据我的任何处理器,数据类型的最大大小必须是通用寄存器的大小.我对吗?

解决方法

是.事实上,C和C标准要求sizeof(long int)> = 4. *

(在这种情况下,我假设CHAR_BIT == 8.)

这与32位机器上的64位整数相同.它的实现方式是使用两个寄存器来表示下半部分和上半部分.

加法和减法作为两个指令完成:

在x86上:

>添加:添加和adc,其中adc是“add with carry”
>减法:sub和sbb,其中sbb是“借用减去”

例如:

long long a = ...;
long long b = ...;

a += b;

会编译成类似的东西:

add eax,ebx
adc edx,ecx

eax和edx是a的下部和上部.而ebx和ecx是b的下部和上部.

双字整数的乘法和除法更复杂,但它遵循相同的小学数学 – 但每个“数字”是处理器字.

(编辑:李大同)

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

    推荐文章
      热点阅读