java 的入口地址_为什么我的可执行文件中的入口点地址是0x8048330(0x330是.text部分的偏移量)...

条目地址由链接编辑器在创建可执行文件时设置 . 加载程序将程序文件映射到ELF头指定的地址,然后将控制权转移到入口地址 .

要使用具体示例,请考虑以下事项:

% file a.out

a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, \

for GNU/Linux 2.6.15, not stripped

% readelf -e a.out

... snip ...

Elf file type is EXEC (Executable file)

Entry point 0x8048170

There are 6 program headers, starting at offset 52

Program Headers:

Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align

LOAD 0x000000 0x08048000 0x08048000 0x7cca6 0x7cca6 R E 0x1000

LOAD 0x07cf98 0x080c5f98 0x080c5f98 0x00788 0x022fc RW 0x1000

... snip ...

第一个程序头指定文件偏移量0的文件内容应映射到虚拟地址0x08048000 . 此段的文件和内存大小为0x7cca6字节 . 该段将以可读和可执行的方式映射,但不可写(它包含程序的代码) .

ELF头中指定的入口点地址是0x8048170,它位于包含程序代码的区域内 .

John Levine的书“Linkers and Loaders”是一个很好的资源,可以就链接编辑和加载器相关事宜进行咨询 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值