ELF文件格式

Dan*_*der 3 c++ compiler-construction simulation elf spim

我正在尝试手动将使用g ++编译的elf文件的hexdump加载到我设计的处理器模拟中.标准elf文件有30个部分,我正在加载所有30个段,并考虑到它们正确的内存位置偏移.然后我在该.text部分的开头(00400130)启动我的程序计数器,但似乎程序运行不正常.我使用SPIM作为黄金标准,相对彻底地验证了我的处理器设计.奇怪的是,如果我将一个汇编文件加载到SPIM中,然后取出软件生成的反汇编.text.data部分,将它们加载到我的处理器内存中,程序就可以工作了.这与我想做的不同,因为我想:

  • 写一个c ++程序
  • 使用mipseb-linux-g ++(交叉编译器)编译它
  • hex将所有部分转储到自己的文件中
  • 读取文件并将内容加载到处理器"内存"中
  • 运行程序

我最初应该在ELF文件中放置程序计数器的位置?我现在就开始了.text.另外,我只需要包含.text并使.data我的程序正常工作吗?我在这做错了什么?

Aid*_*lly 5

ELF头应包括入口地址,该地址不一定与该.text区域中的第一个地址相同.用objdump -f看什么文件的入口点是-它会被称为"起始地址".

这里描述格式- 您应该使用program headers而不是将section headersELF图像加载到内存中(我怀疑有30个程序头),并且入口点将由e_entryELF头中的字段描述.