对于家庭作业,我已经获得了一些c文件,并使用arm-linux-gcc编译它们(我们最终会定位gumstix板,但是对于这些练习,我们一直在使用qemu和ema).
其中一个问题让我感到困惑 - 我们被告知:
使用arm-linux-objdump查找可执行二进制文件中main()中声明的变量的位置.
但是,这些变量是本地的,因此在运行之前不应该有地址,对吗?
我想也许我需要找到的是堆栈帧中的偏移量,实际上可以使用objdump找到它(不是我知道的).
无论如何,对此事的任何见解将不胜感激,如果有必要,我很乐意发布源代码.
这将取决于程序以及他们想要变量的位置的准确程度。问题是想知道它们存储在哪个代码段中吗?.const .bss 等?它需要具体地址吗?无论哪种方式,一个好的开始是使用 objdump -S 标志
objdump -S myprogram > dump.txt
Run Code Online (Sandbox Code Playgroud)
这很好,因为它会打印出源代码和带有地址的程序集的混合内容。从这里开始,只需搜索您的int main内容即可开始。