一、可执行文件:状态机的描述
操作系统为程序提供执行环境
1、可执行文件是最重要的操作对象
一个描述了状态机的初始状态+迁移的数据
2、寄存器
大部分有ABI规定,操作系统负责设置
3、地址空间(内存)
二进制文件+ABI共同决定
二、常见的可执行文件
Windows 95/NT+
1、PE
Linux/UNIX
1、a.out
2、ELF(Executable Linkable Format)
3、She-bang
#! ./a.out
三、可执行文件解析
1、生成可执行文件
(1)ld(linker),as(assembler)
(2)ar,ranlib
2、分析可执行文件
(1)objcopy/objdump/readelf
(2) addr2line
三、可执行文件的运行时资状态
使用gdb调试器查看
gcc a.c -g
gdb a.out
(gdb)bt //调用栈
四、重定位
五、编译与链接
编译器
C语言 -》 汇编
汇编器
汇编 -》 二进制
链接器
链接多个二进制文件,得到一个完整的程序流程(一个完成的状态机)