我对#34;低级别"非常新。编程,实际上我只是在eclipse中逐步完成一些代码。在"反汇编视图"在eclipse中,第一列代表内存地址。它看起来像:
000936fc: E5DCC000 LDRB R12, [R12]
00093700: E35C0000 CMP R12, #0
所以,"虚拟"问题: 我只知道这样的记忆表示:
0x5600000:
0x825ffff:
那么,第一个例子的内存地址是否与下一个相同? :
0x0936fc
0x093700
答案 0 :(得分:1)
您的问题有多种解释。最简单的是“为什么这些地址更短”。答案是他们将0扩展到程序计数器字长。
另一个可能的问题是为什么这些地址不同,而我不熟悉Eclipse的调试菜单,所以我将对你从哪里派生这些数字做一些假设。如果Eclipse提供类似于其他调试器的信息,那么您只需查看链接器的手工操作。
这些地址大致称为虚拟地址,是relocations的结果,可能由于众多原因而无法枚举。