没有寄存器超过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,ebxadc edx,ecx
eax和edx是a的下部和上部.而ebx和ecx是b的下部和上部.
双字整数的乘法和除法更复杂,但它遵循相同的小学数学 – 但每个“数字”是处理器字.
总结以上是内存溢出为你收集整理的16位处理器如何具有4字节大小的长整数?全部内容,希望文章能够帮你解决16位处理器如何具有4字节大小的长整数?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)