Memory 32位体系结构中的最小字长是多少?

Memory 32位体系结构中的最小字长是多少?,memory,Memory,比如说,我要设计一种低级语言。变量的实际最小数据类型是什么?例如,java中的基本布尔值只需要1位,它使用的实际内存占用(内存大小)是多少?最小的可直接寻址实体是,现在通常是8位。然后,没有什么可以阻止您在其中打包多个高级语言布尔值,但这将涉及移位和屏蔽的运行时开销,因此这是一个折衷办法。最小的可直接寻址实体是,现在通常是8位。然后,没有什么可以阻止您在其中打包多个高级语言布尔值,但这将涉及移位和掩蔽的运行时开销,因此这是一种折衷。理论上,您可以有一个只占用1位的变量。 然后,编译器将生成一个代

比如说,我要设计一种低级语言。变量的实际最小数据类型是什么?例如,java中的基本布尔值只需要1位,它使用的实际内存占用(内存大小)是多少?

最小的可直接寻址实体是,现在通常是8位。然后,没有什么可以阻止您在其中打包多个高级语言布尔值,但这将涉及移位和屏蔽的运行时开销,因此这是一个折衷办法。

最小的可直接寻址实体是,现在通常是8位。然后,没有什么可以阻止您在其中打包多个高级语言布尔值,但这将涉及移位和掩蔽的运行时开销,因此这是一种折衷。

理论上,您可以有一个只占用1位的变量。 然后,编译器将生成一个代码,该代码获取一个字节,并通过位操作(&,shift)从中获取信息


如果使用某种压缩来存储数据并检索与该变量相关联的数据,它甚至可能小于一位…

理论上,您可以拥有一个仅占用1位的变量。 然后,编译器将生成一个代码,该代码获取一个字节,并通过位操作(&,shift)从中获取信息



如果您使用某种压缩来存储数据并检索与该变量相关联的数据,它甚至可能小于一位…

并非所有32位处理器体系结构都是相同的,并且并非给定体系结构的所有实现都具有相同的字大小。它最终取决于处理器本身。8位、16位和32位字长在32位系统上都很常见。内存地址(通常——正如Paul R在下面指出的,系统中存在的最小地址是一个字大小)分配给每个字节,通常是8位(虽然不必如此——我不知道有一个非理论体系结构不是这样的,但我确信存在一个)。因此,您可以有意义地分配的最小内存量是1字节。

并非所有32位处理器体系结构都是相同的,也不是给定体系结构的所有实现都具有相同的字大小。它最终取决于处理器本身。8位、16位和32位字长在32位系统上都很常见。内存地址(通常——正如Paul R在下面指出的,系统中存在的最小地址是一个字大小)分配给每个字节,通常是8位(虽然不必如此——我不知道有一个非理论体系结构不是这样的,但我确信存在一个)。因此,您可以有意义地分配的最小内存量是1字节。

这取决于您的目标平台。x86上最小的可寻址内存单元是1字节(8位)。这就是说,你可以设计你的语言来操纵一个字节的个人比特,就像C和C++位字段一样。然而,在后台,编译器需要在字节级别生成一些奇特的位操作来旋转这些位。

这取决于您的目标平台。x86上最小的可寻址内存单元是1字节(8位)。这就是说,你可以设计你的语言来操纵一个字节的个人比特,就像C和C++位字段一样。然而,在后台,编译器需要在字节级别生成一些奇特的位操作来旋转这些位。

对,你不能只分配1位内存并分配1位数据吗?不,你不能,至少不能在使字节成为smalles可寻址单元的体系结构下(这在当今是最常见的)。@Nick Sure,但是内存分配器从操作系统获取内存,而操作系统从处理器获取内存,因此实际获取的内存量与malloc的内存量不同。另外,标准的libc malloc不允许您分配少于一个字节(或者说,任何不是整数字节数的东西),因为处理器没有办法寻址少于一个字节的东西。谁说您必须分配?适用于全局变量和堆栈上的变量。我认为这是一个理论问题。你可以用我描述的方式编写一种语言。对,你不能只分配1位内存,然后分配1位数据吗?不,你不能,至少不能在使字节成为小型可寻址单元的体系结构下(这在当今是最常见的)。@Nick Sure,但是内存分配器从操作系统获取内存,而操作系统从处理器获取内存,因此实际获取的内存量与malloc的内存量不同。另外,标准的libc malloc不允许您分配少于一个字节(或者说,任何不是整数字节数的东西),因为处理器没有办法寻址少于一个字节的东西。谁说您必须分配?适用于全局变量和堆栈上的变量。我认为这是一个理论问题。你可以用我描述的方式编写一种语言。有些DSP不能处理比一个字小的任何东西(通常是24或32位)。@Paul我有一种感觉,有些系统不能按字节寻址,我只是个人没有意识到。谢谢有些DSP不会处理比一个字小的任何东西(通常是24或32位)。@Paul我有一种感觉,有些系统不会按字节寻址,我只是个人没有意识到。谢谢这里有很多答案指出位级别的访问需要掩蔽和移位。这可能是最流行的处理器的情况,但我相信我在遥远的过去见过一种CPU,它有设置、清除和测试单个位的指令。不过,这需要一个两部分寻址方案。这里有很多答案指出,位级别的访问需要掩蔽和移位。这可能是最流行的处理器的情况,但我相信我在遥远的过去见过一个CPU,它有设置c的指令