当前位置: 技术问答>linux和unix
菜鸟提问2,100分(千金散尽还复来, 可惜只能给一百分) Section segiment
来源: 互联网 发布时间:2015-04-10
本文导语: 看文档里面说linux下面的可执行代码是按照 segment section 组织的, 请大家指教一下,是怎么回事。 | 我也扯几句,如果你对汇编熟的话较易理解。 可执行代码中划分成好多section.不同的section...
看文档里面说linux下面的可执行代码是按照 segment section 组织的,
请大家指教一下,是怎么回事。
请大家指教一下,是怎么回事。
|
我也扯几句,如果你对汇编熟的话较易理解。
可执行代码中划分成好多section.不同的section有不同的作用,
不同的文件格式有不同的section划分规则,下面列出的每行的第一个字母是汇编语言认识的section类型标志,每一种类型的section都可以在编译和连接时指定一个section名,相同类型不同名称的section会被按顺序放到一起。
COFF格式
b bss section (没有被初始化的数据 如int a;) 属于数据段
n section 不使用
w 可写section 这种区在执行时可以写入数据
d 数据section 这种区包含被初始化的数据,如int a=0; 属于数据段
r 只读section 这种区包含所有常量数据,如232L,const int a=1。 属于数据段
x 可执行section 这种区包含所有的可执行代码,将来装入代码段。
s 共享section (对于PE格式有用)
a 不使用.为了同elf兼容
ELF
a 可分配section 数据段
w 可写section 数据段
x 可执行section 代码段
M 可合并section
S 字符串section 包含'' 数据段
shell/OS会将整个文件装入内存,按照不同的格式读取其标准类型的section,然后将段地址放入cs寄存器,然后置ds,ss等寄存器,然后jump到代码段section所在内存首地址,就开始执行程序了。
可执行代码中划分成好多section.不同的section有不同的作用,
不同的文件格式有不同的section划分规则,下面列出的每行的第一个字母是汇编语言认识的section类型标志,每一种类型的section都可以在编译和连接时指定一个section名,相同类型不同名称的section会被按顺序放到一起。
COFF格式
b bss section (没有被初始化的数据 如int a;) 属于数据段
n section 不使用
w 可写section 这种区在执行时可以写入数据
d 数据section 这种区包含被初始化的数据,如int a=0; 属于数据段
r 只读section 这种区包含所有常量数据,如232L,const int a=1。 属于数据段
x 可执行section 这种区包含所有的可执行代码,将来装入代码段。
s 共享section (对于PE格式有用)
a 不使用.为了同elf兼容
ELF
a 可分配section 数据段
w 可写section 数据段
x 可执行section 代码段
M 可合并section
S 字符串section 包含'' 数据段
shell/OS会将整个文件装入内存,按照不同的格式读取其标准类型的section,然后将段地址放入cs寄存器,然后置ds,ss等寄存器,然后jump到代码段section所在内存首地址,就开始执行程序了。
|
菜鸟研究这种问题?
建议你去看看ELF的格式文档,有详细介绍。
建议你去看看ELF的格式文档,有详细介绍。
|
看ELF: From The Programmer's Perspective
http://linux4u.jinr.ru/usoft/WWW/www_debian.org/Documentation/elf/elf.html
http://linux4u.jinr.ru/usoft/WWW/www_debian.org/Documentation/elf/elf.html
|
UP
|
up
|
i donot understand
but you are not a bird
but you are not a bird
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。