【发布时间】:2016-03-31 21:01:29
【问题描述】:
我在 nasm (linux) 中写了一个简单的小程序:
使用命令nasm -f elf32 -o file.o file.asm生成目标文件。
当使用objdump -M intel -d file.o 我得到这个结果:
我看到objdump 显示的地址是合理的,但是当我使用命令ld -m elf_i386 -o executable file.o 编译生成可执行代码时;我通过在可执行文件上使用 objdump 得到以下结果:
问题:
- 为什么地址会变得这么长,虽然可执行文件非常小(最多 500 字节)。
- 关于地址指向什么,我确定它没有指向内存,因为程序还没有收费。
- 它们是相对地址还是绝对地址??如果是相对的,那么相对于什么?如果是绝对的,它们怎么可能是绝对的,程序还没有在内存中充电。
如果这个问题对你们中的一些人来说似乎很愚蠢,我真的很抱歉,但我真的需要理解这一点,它会对我的项目有很大帮助。
【问题讨论】:
标签: linux nasm ld elf memory-address