相关疑难解决方法(0)

字可寻址和字节可寻址之间的区别

有人能解释一下有什么不同WordByte可寻址的吗?它与内存大小等有什么关系?

memory operating-system cpu-architecture

21
推荐指数
2
解决办法
5万
查看次数

为什么在64位虚拟地址与物理地址(52位长)相比,4位短(48位长)?

在"低级编程:英特尔®64架构上的C,汇编和程序执行"一书中,我读到:

每个虚拟64位地址(例如,我们在程序中使用的地址)由几个字段组成.地址本身实际上只有48位宽; 它被符号扩展为64位规范地址.它的特点是它的17个左位是相等的.如果不满足条件,则在使用时立即拒绝该地址.然后借助特殊表将48位虚拟地址转换为52位物理地址.

为什么虚拟地址和物理地址之间的差异为4位?

assembly memory-management virtual-memory memory-address mmu

12
推荐指数
1
解决办法
2304
查看次数

指向不同类型的指针可以有不同的二进制表示吗?

我想知道是否允许 C++ 实现以不同方式表示指向不同类型的指针。例如,如果我们有 4 字节大小/对齐int和 8 字节大小/对齐long,是否可以将指向int/ 的指针表示long为对象地址分别右移 2/3 位?这将有效地禁止将指向指针转换为指向long指针int

我问是因为[expr.reinterpret.cast/7]

对象指针可以显式转换为不同类型的对象指针。v对象指针类型的纯右值转换为对象指针类型“指向cv 的 指针T”时,结果为static_­cast<cv T*>(static_­cast<cv void*>(v))

[注7:将指向T1对象类型的“指向”类型的指针转​​换为“指向”T1类型的指针T2(其中T2是对象类型,对齐要求T2不比 更严格T1)并返回到其原始类型type 产生原始指针值。—尾注]

第一句暗示我们可以将指针转换为任意两种对象类型。但是,(非规范性)注释 7 中的移情文本表示对齐在这里也起到了一定的作用。(这就是为什么我想出了这个int-long上面的例子。)

c++ pointers language-lawyer bit-representation

7
推荐指数
1
解决办法
198
查看次数