在Linux中,我了解到每个进程都在32位机器中存储从0x08048000开始的数据(在64位机器中存储0x00400000).
但我不知道从那里开始的原因.在0x08048000用于之前的内存是多少?
更新:有些人认为它是为内核映射的.但据我所知,Linux内核使用在用户堆栈之后启动的高端内存.
我在Linux x86_64上试验ELF可执行文件和gnu工具链:
我已经链接并剥离(手工)"Hello World"测试.:
.global _start
.text
_start:
mov $1, %rax
...
Run Code Online (Sandbox Code Playgroud)
到一个267字节的ELF64可执行文件...
0000000: 7f45 4c46 0201 0100 0000 0000 0000 0000 .ELF............
0000010: 0200 3e00 0100 0000 d400 4000 0000 0000 ..>.......@.....
0000020: 4000 0000 0000 0000 0000 0000 0000 0000 @...............
0000030: 0000 0000 4000 3800 0100 4000 0000 0000 ....@.8...@.....
0000040: 0100 0000 0500 0000 0000 0000 0000 0000 ................
0000050: 0000 4000 0000 0000 0000 4000 0000 0000 ..@.......@.....
0000060: 0b01 0000 0000 0000 0b01 0000 …Run Code Online (Sandbox Code Playgroud)