so文件格式详解_文件xls文件怎么打开

so文件格式详解_文件xls文件怎么打开可执行链接格式(ExecutableandLinkingFormat)最初是由UNIX系统实验室(UNIXSystemLaboratories,USL)开发并发布,作为应用程序二进制接口(ApplicationBinaryInterface,ABI)的一部分,它是一种常用的目标文件格式,主要包含以下三种类型1、可重定位文件:可与其它目标文件一起创建可执行文件和共

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

可执行链接格式 ( Executable and Linking Format)最初是由 UNIX 系统实验室 ( UNIXSystem Laboratories, USL)开发并发布, 作为应用程序二进制接口 ( Application BinaryInterface, ABI)的一部分,它是一种常用的目标文件格式,主要包含以下三种类型

1、可重定位文件:可与其它目标文件一起创建可执行文件和共享目标文件

2、可执行文件:可执行的一个程序,此文件规定了exec() 如何创建一个程序的进程映像。

3、共享目标文件:链接器可将它与其它可重定位文件和共享目标文件连接成其它的目标文件,动态连接器又可将它与可执行文件和其它共享目标文件结合起来创建一个进程映像。

ELF常用数据格式

so文件格式详解_文件xls文件怎么打开

所有数据结构都遵从“自然”大小和对齐规则。

目标文件格式

so文件格式详解_文件xls文件怎么打开

目标文件既要参与程序链接,又要参与程序执行,因此提供两种并行视图,分别反应不同活动需求。

ELF头部:描述整个文件组织。

程序头部:告诉系统如何创建进程映像。

节区头部:每个节区在表中都有一项,每一项给出节区名称、大小等信息。用于链接的目标文件必含节区头部表。

ELF Header

#define EI_NIDENT 16
typedef struct{
unsigned char e_ident[EI_NIDENT];//ElF标识信息,16个字节
Elf32_Half e_type;//目标文件类型,2个字节
Elf32_Half e_machine;//目标体系结构类型,2个字节
Elf32_Word e_version;//目标文件版本,4个字节
Elf32_Addr e_entry;//程序入口的虚拟地址,如果没有则为0,4个字节
Elf32_Off e_phoff;//程序头部表偏移,4个字节
Elf32_Off e_shoff;//节区头部表偏移,4个字节
Elf32_Word e_flags;//与文件相关,特定于处理器标志,4个字节
Elf32_Half e_ehsize;//elf头部大小,2个字节
Elf32_Half e_phentsize;//程序头部表格的表项大小,2个字节
Elf32_Half e_phnum;//程序头部表格表项数目,2个字节
Elf32_Half e_shentsize;//节区头部表格的表项大小,2个字节
Elf32_Half e_shnum;//节区头部表格的表项数目,2个字节
Elf32_Half e_shstrndx;//节区头部表格中与节区名称字符串表相关的表项索引,2个字节
}Elf32_Ehdr;

Program Header

typedef struct {
Elf32_Word p_type;//描述段的类型,4个字节
Elf32_Off p_offset;//段偏移,4个字节
Elf32_Addr p_vaddr;//段虚拟地址,4个字节
Elf32_Addr p_paddr;//物理地址,4个字节
Elf32_Word p_filesz;//段的文件映像大小,4个字节
Elf32_Word p_memsz;//段的内存映像大小,4个字节
Elf32_Word p_flags;//段相关标识,4个字节
Elf32_Word p_align;//对齐取值,4个字节
} Elf32_phdr;

Section Header

typedef struct{
Elf32_Word sh_name;//节区名称,是字符串表节区索引,4个字节
Elf32_Word sh_type;//节区类型,4个字节
Elf32_Word sh_flags;//节区标志,4个字节
Elf32_Addr sh_addr;//节区内存地址,4个字节
Elf32_Off sh_offset;//节区偏移,4个字节
Elf32_Word sh_size;//节区长度,4个字节
Elf32_Word sh_link;//节区头部表索引链接,4个字节
Elf32_Word sh_info;//附加信息,4个字节
Elf32_Word sh_addralign;//对齐约束,4个字节
Elf32_Word sh_entsize;//节区表项大小,4个字节
}Elf32_Shdr;

Symbol Table

typedef struct {
Elf32_Word st_name;//符号表项名称,是字符串表索引,4个字节
Elf32_Addr st_value;//符号值,4个字节
Elf32_Word st_size;//符号大小,4个字节
unsigned char st_info;//类型和绑定信息,1个字节
unsigned char st_other;//无定义,1个字节,当前值为0
Elf32_Half st_shndx;//节区头部索引,2个字节
} Elf32_sym;

节区

节区包含目标文件中所有信息。除了ELF头部、程序头部表格、节区头部表格。节区满足以下条件:
1、每个节区都有对应的节区头部描述,而有节区头部却不一定有节区。
2、每个节区占用连续字节区域,可能为0
3、目标文件中可能包含非活动空间,这些区域不属于任何头部和节区,其内容未指定。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193384.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 一文带你了解Zookeeper基本概念、集群搭建、使用方法「建议收藏」

    本文图文并茂的描述了:zookeeper是什么,演示了Zookeeper集群如何搭建、Zookeeper常用命令的使用、如何查看Zookeeper日志;详细描述了Zookeeper数据模型、watch机制、ACL、集群选举机制。非常适合刚接触ZK的小伙伴哟,相信你读完之后,最基本也能描述出Zookeeper是个什么了。ZooKeeper一、ZooKeeper1、Zookeeper概述​ Zookeeper是一个分布式协调服务的开源框架。主要作用是为分布式系统提供协调服务,包括但不限于:分布式锁

    2022年4月5日
    28
  • Android 自定义 ViewPager 打造千变万化的图片切换效果

    Android 自定义 ViewPager 打造千变万化的图片切换效果转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38026503 记得第一次见到ViewPager这个控件,瞬间爱不释手,做东西的主界面通通ViewPager,以及图片切换也抛弃了ImageSwitch之类的,开始让ViewPager来做。时间长了,ViewPager的切换效果觉得枯燥,形成了审美疲劳~~我们需要改变,今天教大家如

    2022年7月22日
    11
  • typescript web_jenkins自动编译

    typescript web_jenkins自动编译前言上一篇我们讲到如何手动编译TypeScript,如果我们每次都要手动编译,那么这样会很累,接下来就介绍自动编译TypeScript。mac自动编译typescript在Typescript文

    2022年8月7日
    7
  • 反转每对括号间的子串java_已知入栈序列求出栈序列

    反转每对括号间的子串java_已知入栈序列求出栈序列给出一个字符串 s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中 不应 包含任何括号。示例 1:输入:s = “(abcd)”输出:“dcba”示例 2:输入:s = “(u(love)i)”输出:“iloveu”示例 3:输入:s = “(ed(et(oc))el)”输出:“leetcode”示例 4:输入:s = “a(bcdefghijkl(mno)p)q”输出:“apmnolkjihgfedcb

    2022年8月9日
    3
  • mysql字符串拼接的方法_sql中拼接字符串的方法

    mysql字符串拼接的方法_sql中拼接字符串的方法总是记不住字符串拼接,每次都要百度去搜索,所以在这里记录一下,好方便后续的查找,如有错误和问题可以提出,谢谢。字符串拼接分为几种方式,在这里会一一举例写出:第一种:mysql自带语法CONCAT(string1,string2,…),此处是直接把string1和string2等等的字符串拼接起来(无缝拼接哦)说明:此方法在拼接的时候如果有一个值为NULL,则返回NULL…

    2022年9月30日
    2
  • excel转json操作

    excel转json操作工作中需要用到将从数据库中下载的excel每行数据转成json文件,用于规则回溯,参考网上资料,通过以下代码可实现:importpandasaspdimportnumpyasnpimportjsonimportdatetime#导入数据#由于phone2有缺失值,如果不加converters={‘phone2’:str},导致读入会变成float形式,导致有值的手机号码后会加点0,如13812341234.0data=pd.read_excel(r’C:\Users\

    2022年6月12日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号