gpt4 book ai didi

c - 16 位处理器如何拥有 4 字节大小的 long int?

转载 作者:太空狗 更新时间:2023-10-29 15:14:08 27 4
gpt4 key购买 nike

enter image description here

我对 16 位 CPU 上的 long int 的大小有疑问。查看其架构:

enter image description here

没有寄存器的长度超过 16 位。那么,为什么 long int 可以有超过 16 位。事实上,根据我的说法,对于任何处理器,数据类型的最大大小必须是通用寄存器的大小。我说得对吗?

最佳答案

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

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

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

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

在 x86 上:

  • 加法:addadc 其中adc 是“add with carry”
  • 减法:subsbb 其中 sbb 是“subtract with borrow”

例如:

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

a += b;

将编译成类似的东西:

add eax,ebx
adc edx,ecx

其中eaxedxa的下半部分和上半部分。而ebxecx分别是b的下部和上部。

双字整数的乘法和除法更复杂,但它遵循相同类型的小学数学 - 但其中每个“数字”都是一个处理器字。

关于c - 16 位处理器如何拥有 4 字节大小的 long int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13403880/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com