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” 例如: long long a = ...; long long b = ...; a += b; 会编译成类似的东西: add eax,ebx adc edx,ecx eax和edx是a的下部和上部.而ebx和ecx是b的下部和上部. 双字整数的乘法和除法更复杂,但它遵循相同的小学数学 – 但每个“数字”是处理器字. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |