关于ELF文件和BIN文件

ELF文件执行过程

ELF文件有操作系统的加载器loader执行,比如linux,windows,对于3803处理器是grmon的load命令。

加载器会读取ELF文件program header,比如:

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  LOAD           0x000074 0x08000000 0x08000000 0x00050 0x00050 R E 0x4
  LOAD           0x0000c4 0x70000000 0x70000000 0x00004 0x00008 RW  0x4

 Section to Segment mapping:
  Segment Sections...
   00     .text 
   01     .data .bss 

上面的程序头有两个项目,也就是两个段segment,第一个段存放text节,第二个段存放data和bss。

第一个段的虚拟地址,即rom地址(是吗?)是0800 0000,在文件中偏移为0x74,文件大小和mem大小均为0x50.

第二个段的虚拟地址,即ram地址(是吗?)是7000 0000,在文件中偏移为0xc4,文件大小为4,mem大小为8(其中4字节bss).

加载器读取程序头,根据程序头的信息,将相应内容写到对应存储器上(text会放在rom里吗?),然而,执行入口点处的指令。

猜你喜欢

转载自www.cnblogs.com/yanhc/p/12289162.html
今日推荐