Arm汇编代码调试处理方法及装置制造方法

文档序号:6502676阅读:152来源:国知局
Arm汇编代码调试处理方法及装置制造方法
【专利摘要】本发明实施例提供一种ARM汇编代码调试处理方法及装置,该方法包括:根据转换规则,将ARM汇编代码转换为ARM汇编仿真代码ASC,所述ASC为使用C++语法形式表示的ARM汇编代码;应用C++集成开放环境对所述ASC进行调试。本发明实施例中,根据转换规则将ARM汇编代码转换为ASC,然后就可以应用C++IDE对该ASC进行调试,而无需再依赖于专业的特定的仿真器,也可以实现快速支持ARM最新指令集,使得相关产品的开发更加灵活、可扩展。
【专利说明】ARM汇编代码调试处理方法及装置

【技术领域】
[0001] 本发明涉及通信技术,尤其涉及一种ARM汇编代码调试处理方法及装置。

【背景技术】
[0002] 高级精简指令集机器(Advanced RISC Machines,简称ARM)体系结构目前已经大 面积运用在移动平台中,例如手机、平板电脑等。由于对功耗的敏感性,开发低功耗、高性能 的应用成为提升用户体验的关键途径之一。
[0003] 对于性能敏感的代码,一般采用汇编及其变体,如内联汇编、Intrinsic等方式进 行编写,其中Intrinsic为特定于某种编译器的用于替代内联汇编的语法。内联汇编和 Intrinsic都需要特定编译器支持,特别地,对于不同的Intrinsic还需要不同的编译器支 持,因此使用Intrinsic会降低代码的可移植性。而普通的汇编则只需要相应的汇编器支 持即可,移植性能较好。但是,汇编代码的编写相对于C++等代码的编写更容易出错,因而 汇编代码的调试显得尤为重要。随着ARM指令集架构不断升级,如果没有仿真器进行单步 调试,那么进行函数、功能模块集成将变得异常困难。
[0004] 现有技术中,对于ARM汇编指令的调试,是使用相应的指令集仿真器,例如WinCE 所使用的Visual Studio,塞班(Symbian)系统所使用的Carbide、ARM官方的Real View套 件。
[0005] 但是,采用现有技术的方法,如果开发、调试新的指令集代码需要等待仿真环境的 更新,而这些环境的更新时间也无法保证,往往会影响产品的开发进度。


【发明内容】

[0006] 本发明提供一种ARM汇编代码调试处理方法及装置,用于解决ARM汇编代码必须 使用特定仿真器进行调试的问题。
[0007] 本发明实施例第一方面提供一种ARM汇编代码调试处理方法,包括:
[0008] 根据转换规则,将ARM汇编代码转换为ARM汇编仿真代码ASC,所述ASC为使用C++ 语法形式表示的ARM汇编代码;
[0009] 应用C++集成开放环境对所述ASC进行调试。
[0010] 结合第一方面,在第一方面的第一种可能的实施方式中,所述转换规则包括以下 各转换子规则之一或其组合:
[0011] ARM普通指令转换子规则、ARM寄存器转换子规则、ARM常量转换子规则、ARM桶形 移位器转换子规则、NEON标量转换子规则、ARM Neon指令转换子规则。
[0012] 结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式 中,所述ARM普通指令转换子规则包括:将所述ARM普通指令转换为C++语法形式中的函 数。
[0013] 结合第一方面的第一种可能的实施方式,在第一方面的第三种可能的实施方式 中,所述ARM寄存器转换子规则包括:将所述ARM寄存器转换为C++语法形式中的全局变 量。
[0014] 结合第一方面的第一种可能的实施方式,在第一方面的第四种可能的实施方式 中,所述ARM常量转换子规则包括:将所述ARM常量转换为C++语法形式中的常量。
[0015] 结合第一方面的第一种可能的实施方式,在第一方面的第五种可能的实施方式 中,所述NEON标量转换子规则包括:将所述NEON标量转换为C++语法形式中的数组和常 量,其中,所述常量为所述数组的索引。
[0016] 结合第一方面的第一种可能的实施方式,在第一方面的第六种可能的实施方式 中,所述ARM桶形移位器转换子规则包括:将所述ARM桶形移位器转换为C++语法形式中的 枚举值。
[0017] 结合第一方面的第一种可能的实施方式,在第一方面的第七种可能的实施方式 中,所述ARM Neon指令转换子规则包括:将所述ARM Neon指令转换为C++语法形式中的对 象和成员函数。
[0018] 本发明实施例第二方面提供一种ARM汇编代码调试处理装置,包括:
[0019] 转换模块,用于根据转换规则,将ARM汇编代码转换为ARM汇编仿真代码ASC,所述 ASC为使用C++语法形式表不的ARM汇编代码;
[0020] 调试模块,用于应用C++集成开放环境对所述ASC进行调试。
[0021] 结合第二方面,在第二方面的第一种可能的实施方式中,所述转换规则包括以下 各转换子规则之一或其组合:
[0022] ARM普通指令转换子规则、ARM寄存器转换子规则、ARM常量转换子规则、ARM桶形 移位器转换子规则、NEON标量转换子规则、ARM Neon指令转换子规则。
[0023] 结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式 中,所述ARM普通指令转换子规则包括:将所述ARM普通指令转换为C++语法形式中的函 数。
[0024] 结合第二方面的第一种可能的实施方式,在第二方面的第三种可能的实施方式 中,所述ARM寄存器转换子规则包括:将所述ARM寄存器转换为C++语法形式中的全局变 量。
[0025] 结合第二方面的第一种可能的实施方式,在第二方面的第四种可能的实施方式 中,所述ARM常量转换子规则包括:将所述ARM常量转换为C++语法形式中的常量。
[0026] 结合第二方面的第一种可能的实施方式,在第二方面的第五种可能的实施方式 中,所述ΝΕ0Ν标量转换子规则包括:将所述ΝΕ0Ν标量转换为C++语法形式中的数组和常 量,其中,所述常量为所述数组的索引。
[0027] 结合第二方面的第一种可能的实施方式,在第二方面的第六种可能的实施方式 中,所述ARM桶形移位器转换子规则包括:将所述ARM桶形移位器转换为C++语法形式中的 枚举值。
[0028] 结合第二方面的第一种可能的实施方式,在第二方面的第七种可能的实施方式 中,所述ARM Neon指令转换子规则包括:将所述ARM Neon指令转换为C++语法形式中的对 象和成员函数。
[0029] 本发明实施例中,根据转换规则将ARM汇编代码转换为ASC,然后就可以应用 C++IDE对该ASC进行调试,而无需再依赖于专业的特定的仿真器,也可以实现快速支持ARM 最新指令集,使得相关产品的开发更加灵活、可扩展。

【专利附图】

【附图说明】
[0030] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发 明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以 根据这些附图获得其他的附图。
[0031] 图1为本发明提供的ARM汇编代码调试处理方法实施例一的流程示意图;
[0032] 图2为本发明提供的ARM汇编代码调试处理装置实施例一的结构示意图。

【具体实施方式】
[0033] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0034] 图1为本发明提供的ARM汇编代码调试处理方法实施例一的流程示意图,如图1 所示,该流程包括:
[0035] S101、根据转换规则,将ARM汇编代码转换为ARM汇编仿真代码(ARM Simulated Code,简称ASC),该ASC为使用C++语法形式表示的ARM汇编代码。
[0036] 该转换规则为将ARM汇编代码转换为按照C++语法形式表示的ARM汇编代码的规 则。
[0037] S102、应用 C++集成开放环境(C++Integrated Development Environment,简称 C++IDE)对上述ASC进行调试。
[0038] 本实施例中,根据转换规则将ARM汇编代码转换为ASC,然后就可以应用C++IDE对 该ASC进行调试,而无需再依赖于专业的仿真器,也可以实现快速支持ARM最新指令集,使 得相关产品的开发更加灵活、可扩展。
[0039] 进一步地,上述转换规则包括以下各转换子规则之一或其组合:ARM普通指令转 换子规则、ARM寄存器转换子规则、ARM常量转换子规则、ARM桶形移位器转换子规则、NEON 标量转换子规则、ARM Neon指令转换子规则。
[0040] 根据上述转换子规则,在实现转换时,将ARM汇编代码划分为ARM普通指令、ARM寄 存器、ARM常量、ARM桶形移位器、ΝΕ0Ν标量、ARM Neon指令,这样根据上述转换子规则分别 进行转换,以获取转换后的ASC,这样可以利用C++代码中的全局变量、函数、宏、枚举值、重 载等特性,根据上述转换规则获得能够在C++IDE中进行调试的代码。
[0041] 举例说明,ARM普通指令转换子规则可以是将ARM普通指令转换为C++语法形式 中的函数,例如将"add"转换为"add () ","add"为ARM普通指令,"add() "为C++语法形式 中的函数。
[0042] 类似地,ARM寄存器转换子规则可以为将所述ARM寄存器转换为C++语法形式中 的全局变量,例如,将"r0,rl, r2"转换为"r0,rl,r2" ;将、8,dO, d4"转换为"q8,dO, d4"。
[0043] ARM常量转换子规则可以为将所述ARM常量转换为C++语法形式中的常量,例如, 将"#2"转换为"2"。
[0044] NEON标量转换子规则可以为将所述NEON标量转换为C++语法形式中的数组和常 量,例如将ARM汇编代码中的NEON标量"d30[0] "转换为"d30,0",其中"0"表示该数组d30 的索引。
[0045] ARM桶形移位器转换子规则可以为将所述ARM桶形移位器转换为C++语法形式中 的枚举值,例如将" lsl "转换为" lsl "。
[0046] ARM Neon指令转换子规则可以为将所述ARM Neon指令转换为C++语法形式中的 对象和成员函数例如,将"vmull. ul6"转换为"vmull. ul6"。
[0047] 当然,具体实现过程中并不以上述例子为限。
[0048] 在获取到上述ASC之后,为了使该ASC能后在C++IDE中运行,进一步地在ASC中添 加程序运行时限,以获得能够在C++IDE中运行的ASC运行时(ASC Run Time,简称ASC RT)。
[0049] 具体地,上述转换规则可以用转换规则表来表示,可参照表1。
[0050]表 1
[0051]

【权利要求】
1. 一种ARM汇编代码调试处理方法,其特征在于,包括: 根据转换规则,将ARM汇编代码转换为ARM汇编仿真代码ASC,所述ASC为使用C++语 法形式表示的ARM汇编代码; 应用C++集成开放环境对所述ASC进行调试。
2.根据权利要求1所述的方法,其特征在于,所述转换规则包括以下各转换子规则之 一或其组合: ARM普通指令转换子规则、ARM寄存器转换子规则、ARM常量转换子规则、ARM桶形移位 器转换子规则、NEON标量转换子规则、ARM Neon指令转换子规则。
3.根据权利要求2所述的方法,其特征在于,所述ARM普通指令转换子规则包括:将所 述ARM普通指令转换为C++语法形式中的函数。
4.根据权利要求2所述的方法,其特征在于,所述ARM寄存器转换子规则包括:将所述 ARM寄存器转换为C++语法形式中的全局变量。
5.根据权利要求2所述的方法,其特征在于,所述ARM常量转换子规则包括:将所述 ARM常量转换为C++语法形式中的常量。
6.根据权利要求2所述的方法,其特征在于,所述NEON标量转换子规则包括:将所述 NEON标量转换为C++语法形式中的数组和常量,其中,所述常量为所述数组的索引。
7.根据权利要求2所述的方法,其特征在于,所述ARM桶形移位器转换子规则包括:将 所述ARM桶形移位器转换为C++语法形式中的枚举值。
8.根据权利要求2所述的方法,其特征在于,所述ARM Neon指令转换子规则包括:将 所述ARM Neon指令转换为C++语法形式中的对象和成员函数。
9. 一种ARM汇编代码调试处理装置,其特征在于,包括: 转换模块,用于根据转换规则,将ARM汇编代码转换为ARM汇编仿真代码ASC,所述ASC 为使用C++语法形式表示的ARM汇编代码; 调试模块,用于应用C++集成开放环境对所述ASC进行调试。
10.根据权利要求9所述的装置,其特征在于,所述转换规则包括以下各转换子规则之 一或其组合: ARM普通指令转换子规则、ARM寄存器转换子规则、ARM常量转换子规则、ARM桶形移位 器转换子规则、NEON标量转换子规则、ARM Neon指令转换子规则。
11.根据权利要求10所述的装置,其特征在于,所述ARM普通指令转换子规则包括:将 所述ARM普通指令转换为C++语法形式中的函数。
12.根据权利要求10所述的装置,其特征在于,所述ARM寄存器转换子规则包括:将所 述ARM寄存器转换为C++语法形式中的全局变量。
13.根据权利要求10所述的装置,其特征在于,所述ARM常量转换子规则包括:将所述 ARM常量转换为C++语法形式中的常量。
14.根据权利要求10所述的装置,其特征在于,所述NEON标量转换子规则包括:将所 述NEON标量转换为C++语法形式中的数组和常量,其中,所述常量为所述数组的索引。
15.根据权利要求10所述的装置,其特征在于,所述ARM桶形移位器转换子规则包括: 将所述ARM桶形移位器转换为C++语法形式中的枚举值。
16.根据权利要求10所述的装置,其特征在于,所述ARM Neon指令转换子规则包括:
【文档编号】G06F11/36GK104142886SQ201310173636
【公开日】2014年11月12日 申请日期:2013年5月10日 优先权日:2013年5月10日
【发明者】明亮, 何士双 申请人:华为软件技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1