我试图了解汇编代码在内存空间中的确切布局。我编写了一个简单的汇编代码,其中只包含几行指令和 .data 部分。当我使用 GDB 检查它时,我看到了数据部分之外的更多内容,而这些内容使用 objdump -section-header 命令是看不到的。下面是 gdb 的输出。
(gdb) x/100x &data
0x804909c <data>: 0x03020100 0x07060504 0x0b0a0908 0x050e0d0c
0x80490ac <other>: 0x00000000 0x6d79732e 0x00626174 0x7274732e
0x80490bc: 0x00626174 0x7368732e 0x61747274 0x742e0062
0x80490cc: 0x00747865 0x7461642e 0x00000061 0x00000000
0x80490dc: 0x00000000 0x00000000 0x00000000 0x00000000
0x80490ec: 0x00000000 0x00000000 0x00000000 0x00000000
0x80490fc: 0x00000000 0x0000001b 0x00000001 0x00000006
0x804910c: 0x08048074 0x00000074 0x00000027 0x00000000
0x804911c: 0x00000000 0x00000004 0x00000000 0x00000021
.data 部分的结尾是 0x80490af,但正如您所见,除了 .data 部分之外还有更多内容,我对此一无所知。它们到底是什么?他们只是垃圾还是别的什么?如果我尝试访问超出 .data 部分的内存会发生什么?