发明名称 基于C-SKY v2指令集的二进制工具集设计方法
摘要 本发明公开了基于C-SKYv2指令集的二进制工具集设计方法,包括汇编器设计和反汇编器设计,所述汇编器设计包括CSKY系列CPU的目标体系识别、CSKYv2指令集汇编文件的识别和处理、以及正确生成目标文件;通过重新设计汇编器和反汇编器,使其能在杭州中天微公司CSKY800系列嵌入式处理器工作。
申请公布号 CN102681821A 申请公布日期 2012.09.19
申请号 CN201110460873.7 申请日期 2011.12.31
申请人 浙江大学 发明人 李莹;尹茸;尹建伟;邓水光;吴健;吴朝晖
分类号 G06F9/30(2006.01)I 主分类号 G06F9/30(2006.01)I
代理机构 杭州裕阳专利事务所(普通合伙) 33221 代理人 江助菊
主权项 基于C‑SKY v2指令集的二进制工具集设计方法,包括汇编器设计和反汇编器设计,其特征在于,所述汇编器设计包括CSKY系列CPU的目标体系识别、CSKYv2指令集汇编文件的识别和处理、以及正确生成目标文件;所述CSKYv2指令集包括伪指令、一般指令和分支跳转指令;所述CSKYv2指令集汇编文件的识别和处理步骤为:读取汇编源文件,当扫描到标号时调用colon函数处理标号,当扫描到伪指令时调用相应的伪指令处理函数,当扫描到宏指令时调用对应的宏指令处理函数,当扫描到机器指令时调用md_assemble函数进行汇编处理;最后调用若干第二阶段的处理函数处理剩余信息;所述伪指令的处理包括如下步骤:(1)查询伪指令表,调用相应处理函数;(2)若是CSKYv2指令集特有的伪指令,则进行识别转化,根据不同指令以及该汇编语句的具体写法,将这条伪指令转化为一般指令或跳转指令,继续处理;所述md_assemble函数的处理包括如下步骤:(11)将CSKY V2的32位指令按以下三种类型对进行分类,跳转类型编码指令寻址方式、立即数类型编码指令寻址方式和寄存器类型编码指令寻址方式,将CSKY V2的16位指令按跳转类型、立即数类型和寄存器类型进行分类;(12)匹配待处理的汇编文本,解析该段文本所对应的指令,获取该指令的处理函数组;(13)根据该指令的操作数选择合适的处理函数;(14)进入不同种类的指令的处理函数即一般指令或跳转指令急需处理;(15)若指令中包含常量,将该常量放入常量池;所述一般指令的处理包括如下步骤:(16)解析操作数,若操作数不能解析则生成具有相应重定位信息的修补信息;(17)生成新的目标文件片段,写入操作码和操作数;所述分支跳转指令的处理包括如下步骤:(18)解析操作数,若操作数不能解析则生成具有相应重定位信息的修补信息;(19)生成新的目标文件片段,写入操作码和操作数的初始值;(20)进入汇编第二阶段,利用relax方式处理重定位信息和修补信息;所述relax方式的处理包括如下步骤:(21)将CSKYv2中的伪跳转指令和分支跳转指令归纳,分成不同的组,生成数据表;(22)根据该数据表,从同组指令中,选择合适的一条指令;(23)解析修补信息,得到修补后的值;若修补信息不能解析,则作为重定位信息项写入目标文件,修补后的值规定为0;(24)将选定的指令编码,和修补后的值,写入目标文件;所述常量池的处理包括如下步骤:(25)在md_assemble函数的末尾检查常量池;(26)如果常量池大小为0,则创建新的变量池;如果不为0则在常量池查找表达式,创建对常量池的引用;如果不能找到,则在常量池中创建新的一项。
地址 310027 浙江省杭州市西湖区浙大路38号