分类:
2011-12-20 04:59:14
原文地址:嵌入式CPU的工具链移植—反汇编 作者:yuan_xin_yu
反汇编器主要函数实现在objdump.c文件中。它主要实现参数提取与解析,获得与文件相符的target(bfd),以及文件显示。而文件的读操作和写操作最终由bfd完成。反汇编器与体系结构相关的只有读取的二进制向汇编指令的转换部分。
objdump的主函数流程如图,主函数中实际工作都交由display_file()来完成。
display_file主要对文件的类型进行判断(是否是库文件),display_file函数流程如图
display_bfd 主要对单个文件的类型进行判断,函数流程如图
截止到这里,都是对反汇编文件做的准备工作,操作的对象还是文件,不涉及文件的内容。以上的各函数不涉及体系结构,是通用函数,无需移植。
二进制到汇编语言的实现流程:
disassemble_data()函数流程如图
disassemble_bytes()函数实现流程图如图
移值的核心为print_insn_XXXX()函数以及重新对指令分类。主要流程为从read_memory_func (memaddr, ibytes, size, info)获得二进制码并从指令table中寻找与ibytes中匹配的汇编指令。