0

I have a register which 31 bit wide ,Now I am confused between two number that could be used as last address 31 bit scheme .

Would 0x7fff-fffc or 0x80000000 be the last address can be used in 31 scheme.

4

3 回答 3

2

地址从零开始。因此0x7FFFFFFF,如果您要寻址字节。0x7FFFFFFC如果您正在处理 32 位字。

于 2013-10-15T20:12:10.923 回答
1

0x7fff-fffc 或 0x80000000 会是最后一个地址吗?可以在 31 方案中使用。

它们都不是 - 最后一个地址是 0x7fffffff(不是c)。因为0x80000000您已经需要设置第 32 位。

正如@mbratch 指出的那样,0x7ffffffc如果您要寻址 32 位字,则将是最后一个地址,或者类似地,0x7ffffffe如果您要寻址 16 位字。

于 2013-10-15T20:11:28.570 回答
1

假设一个地址仅用于引用 4 块内存(如字节),则 7ffffffc 是最后一个。

通常我们以 8 位字节寻址内存,但没有必要这样做。任何数量的字节都可以进入可寻址的事物。

然后,我们制定了一个约定,我们为每个字节分配地址,但只加载 2 或 4(或任何数量)的块中的内存,因此我们构建硬件以忽略最后的 1 或 2 或任何少数地址行。

值 80000000 不适合 31 位。

值 7fffffff 确实适合 31 个字节,如果您可以寻址单个字节的内存,则可以使用该值。

值 7ffffffc 也适合 31 个字节,如果您一次只能寻址 4 个字节的对齐块中的字节,则将使用该值。

于 2013-10-15T20:12:11.630 回答