相关疑难解决方法(0)

0x08048000用于32位机器之前的内存是多少?

在Linux中,我了解到每个进程都在32位机器中存储从0x08048000开始的数据(在64位机器中存储0x00400000).

但我不知道从那里开始的原因.在0x08048000用于之前的内存是多少?

更新:有些人认为它是为内核映射的.但据我所知,Linux内核使用在用户堆栈之后启动的高端内存.

linux memory operating-system process

19
推荐指数
2
解决办法
5065
查看次数

为什么Linux/gnu链接器选择地址0x400000?

我在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)

linux x86 x86-64 elf ld

16
推荐指数
2
解决办法
3347
查看次数

标签 统计

linux ×2

elf ×1

ld ×1

memory ×1

operating-system ×1

process ×1

x86 ×1

x86-64 ×1