什么时候将虚拟地址(VA)分配给应用程序? (运行时间/编译时间)

时间:2018-04-09 12:50:44

标签: gcc linker arm mmu virtual-address-space

应用程序二进制文件加载到RAM中,使用GCC编译

此二进制文件是否从0x0或其他值开始获取虚拟地址(VA)?

(当我检查应用程序二进制文件时,我无法在应用程序中看到任何VA)

1 个答案:

答案 0 :(得分:0)

我阅读了很多文章并找到了答案,可以解决我的一些问题。

GCC使用ELF格式创建应用程序二进制文件。 如果你执行“readelf -a app_binary”,那么它会显示应用程序的入口点地址。

使用GCC编译的应用程序使用64位的起始虚拟地址0x400000和32位系统中的0x804800。

因此,如果我们尝试访问0x0-0x3fffff,则会看到分段错误。由于未定义虚拟内存。

如果有任何错误,请更正我的回答。 : - )