保存虚拟地址的指针如何指向数据?
处理器如何知道指针的内容是地址而不是数据本身?
有人可以给我一个逐步的过程吗?
保存虚拟地址的指针如何指向数据?
处理器如何知道指针的内容是地址而不是数据本身?
有人可以给我一个逐步的过程吗?
简而言之,C
处理指针的代码被编译为处理地址的 CPU 操作代码——因此,数字——对值执行操作的物理机器代码,只是与对地址执行操作的指令代码不同的指令代码(指针)。
现实当然比这更复杂。您可以C
按照此堆栈溢出问题中的说明详细了解不同(小)程序
会发生什么情况How do you get assembler output from C/C++ source in gcc?
在更深的层次上,操作系统和 CPU 虚拟化物理内存——因此,在硬件中请求地址 x 的内存的指令使用虚拟查找表从物理地址 y 获取内存——这是一种现代开发,它允许安全性和内存管理功能,例如内存随机化。
您是在询问有关已编写整本书的问题,但要点如下:
*
)一个变量持有一个指针。编译器将这些信息转换成代码,告诉处理器该做什么。处理器“不知道指针的内容是地址而不是数据本身”;它只是按照机器代码的指示进行。