ARM汇编代码调试处理方法及装置.pdf

上传人:b*** 文档编号:268601 上传时间:2018-02-07 格式:PDF 页数:14 大小:6.11MB
返回 下载 相关 举报
摘要
申请专利号:

CN201310173636.1

申请日:

2013.05.10

公开号:

CN104142886A

公开日:

2014.11.12

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 11/36申请日:20130510|||公开

IPC分类号:

G06F11/36

主分类号:

G06F11/36

申请人:

华为软件技术有限公司

发明人:

明亮; 何士双

地址:

210012 江苏省南京市雨花台区安德门94号

优先权:

专利代理机构:

北京同立钧成知识产权代理有限公司 11205

代理人:

刘芳

PDF下载: PDF下载
内容摘要

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

权利要求书

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指令转换子规则包括:将所述ARM Neon指令转换为C++语法形式中的对象和成员函数。

说明书

ARM汇编代码调试处理方法及装置
技术领域
本发明涉及通信技术,尤其涉及一种ARM汇编代码调试处理方法及装置。
背景技术
高级精简指令集机器(Advanced RISC Machines,简称ARM)体系结构目前已经大面积运用在移动平台中,例如手机、平板电脑等。由于对功耗的敏感性,开发低功耗、高性能的应用成为提升用户体验的关键途径之一。
对于性能敏感的代码,一般采用汇编及其变体,如内联汇编、Intrinsic等方式进行编写,其中Intrinsic为特定于某种编译器的用于替代内联汇编的语法。内联汇编和Intrinsic都需要特定编译器支持,特别地,对于不同的Intrinsic还需要不同的编译器支持,因此使用Intrinsic会降低代码的可移植性。而普通的汇编则只需要相应的汇编器支持即可,移植性能较好。但是,汇编代码的编写相对于C++等代码的编写更容易出错,因而汇编代码的调试显得尤为重要。随着ARM指令集架构不断升级,如果没有仿真器进行单步调试,那么进行函数、功能模块集成将变得异常困难。
现有技术中,对于ARM汇编指令的调试,是使用相应的指令集仿真器,例如WinCE所使用的Visual Studio,塞班(Symbian)系统所使用的Carbide、ARM官方的Real View套件。
但是,采用现有技术的方法,如果开发、调试新的指令集代码需要等待仿真环境的更新,而这些环境的更新时间也无法保证,往往会影响产品的开发进度。
发明内容
本发明提供一种ARM汇编代码调试处理方法及装置,用于解决ARM汇 编代码必须使用特定仿真器进行调试的问题。
本发明实施例第一方面提供一种ARM汇编代码调试处理方法,包括:
根据转换规则,将ARM汇编代码转换为ARM汇编仿真代码ASC,所述ASC为使用C++语法形式表示的ARM汇编代码;
应用C++集成开放环境对所述ASC进行调试。
结合第一方面,在第一方面的第一种可能的实施方式中,所述转换规则包括以下各转换子规则之一或其组合:
ARM普通指令转换子规则、ARM寄存器转换子规则、ARM常量转换子规则、ARM桶形移位器转换子规则、NEON标量转换子规则、ARM Neon指令转换子规则。
结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,所述ARM普通指令转换子规则包括:将所述ARM普通指令转换为C++语法形式中的函数。
结合第一方面的第一种可能的实施方式,在第一方面的第三种可能的实施方式中,所述ARM寄存器转换子规则包括:将所述ARM寄存器转换为C++语法形式中的全局变量。
结合第一方面的第一种可能的实施方式,在第一方面的第四种可能的实施方式中,所述ARM常量转换子规则包括:将所述ARM常量转换为C++语法形式中的常量。
结合第一方面的第一种可能的实施方式,在第一方面的第五种可能的实施方式中,所述NEON标量转换子规则包括:将所述NEON标量转换为C++语法形式中的数组和常量,其中,所述常量为所述数组的索引。
结合第一方面的第一种可能的实施方式,在第一方面的第六种可能的实施方式中,所述ARM桶形移位器转换子规则包括:将所述ARM桶形移位器转换为C++语法形式中的枚举值。
结合第一方面的第一种可能的实施方式,在第一方面的第七种可能的实施方式中,所述ARM Neon指令转换子规则包括:将所述ARM Neon指令转换为C++语法形式中的对象和成员函数。
本发明实施例第二方面提供一种ARM汇编代码调试处理装置,包括:
转换模块,用于根据转换规则,将ARM汇编代码转换为ARM汇编仿真 代码ASC,所述ASC为使用C++语法形式表示的ARM汇编代码;
调试模块,用于应用C++集成开放环境对所述ASC进行调试。
结合第二方面,在第二方面的第一种可能的实施方式中,所述转换规则包括以下各转换子规则之一或其组合:
ARM普通指令转换子规则、ARM寄存器转换子规则、ARM常量转换子规则、ARM桶形移位器转换子规则、NEON标量转换子规则、ARM Neon指令转换子规则。
结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,所述ARM普通指令转换子规则包括:将所述ARM普通指令转换为C++语法形式中的函数。
结合第二方面的第一种可能的实施方式,在第二方面的第三种可能的实施方式中,所述ARM寄存器转换子规则包括:将所述ARM寄存器转换为C++语法形式中的全局变量。
结合第二方面的第一种可能的实施方式,在第二方面的第四种可能的实施方式中,所述ARM常量转换子规则包括:将所述ARM常量转换为C++语法形式中的常量。
结合第二方面的第一种可能的实施方式,在第二方面的第五种可能的实施方式中,所述NEON标量转换子规则包括:将所述NEON标量转换为C++语法形式中的数组和常量,其中,所述常量为所述数组的索引。
结合第二方面的第一种可能的实施方式,在第二方面的第六种可能的实施方式中,所述ARM桶形移位器转换子规则包括:将所述ARM桶形移位器转换为C++语法形式中的枚举值。
结合第二方面的第一种可能的实施方式,在第二方面的第七种可能的实施方式中,所述ARM Neon指令转换子规则包括:将所述ARM Neon指令转换为C++语法形式中的对象和成员函数。
本发明实施例中,根据转换规则将ARM汇编代码转换为ASC,然后就可以应用C++IDE对该ASC进行调试,而无需再依赖于专业的特定的仿真器,也可以实现快速支持ARM最新指令集,使得相关产品的开发更加灵活、可扩展。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的ARM汇编代码调试处理方法实施例一的流程示意图;
图2为本发明提供的ARM汇编代码调试处理装置实施例一的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明提供的ARM汇编代码调试处理方法实施例一的流程示意图,如图1所示,该流程包括:
S101、根据转换规则,将ARM汇编代码转换为ARM汇编仿真代码(ARM Simulated Code,简称ASC),该ASC为使用C++语法形式表示的ARM汇编代码。
该转换规则为将ARM汇编代码转换为按照C++语法形式表示的ARM汇编代码的规则。
S102、应用C++集成开放环境(C++Integrated Development Environment,简称C++IDE)对上述ASC进行调试。
本实施例中,根据转换规则将ARM汇编代码转换为ASC,然后就可以应用C++IDE对该ASC进行调试,而无需再依赖于专业的仿真器,也可以实现快速支持ARM最新指令集,使得相关产品的开发更加灵活、可扩展。
进一步地,上述转换规则包括以下各转换子规则之一或其组合:ARM普通指令转换子规则、ARM寄存器转换子规则、ARM常量转换子规则、ARM 桶形移位器转换子规则、NEON标量转换子规则、ARM Neon指令转换子规则。
根据上述转换子规则,在实现转换时,将ARM汇编代码划分为ARM普通指令、ARM寄存器、ARM常量、ARM桶形移位器、NEON标量、ARM Neon指令,这样根据上述转换子规则分别进行转换,以获取转换后的ASC,这样可以利用C++代码中的全局变量、函数、宏、枚举值、重载等特性,根据上述转换规则获得能够在C++IDE中进行调试的代码。
举例说明,ARM普通指令转换子规则可以是将ARM普通指令转换为C++语法形式中的函数,例如将“add”转换为“add()”,“add”为ARM普通指令,“add()”为C++语法形式中的函数。
类似地,ARM寄存器转换子规则可以为将所述ARM寄存器转换为C++语法形式中的全局变量,例如,将“r0,r1,r2”转换为“r0,r1,r2”;将“q8,d0,d4”转换为“q8,d0,d4”。
ARM常量转换子规则可以为将所述ARM常量转换为C++语法形式中的常量,例如,将“#2”转换为“2”。
NEON标量转换子规则可以为将所述NEON标量转换为C++语法形式中的数组和常量,例如将ARM汇编代码中的NEON标量“d30[0]”转换为“d30,0”,其中“0”表示该数组d30的索引。
ARM桶形移位器转换子规则可以为将所述ARM桶形移位器转换为C++语法形式中的枚举值,例如将“lsl”转换为“lsl”。
ARM Neon指令转换子规则可以为将所述ARM Neon指令转换为C++语法形式中的对象和成员函数例如,将“vmull.u16”转换为“vmull.u16”。
当然,具体实现过程中并不以上述例子为限。
在获取到上述ASC之后,为了使该ASC能后在C++IDE中运行,进一步地在ASC中添加程序运行时限,以获得能够在C++IDE中运行的ASC运行时(ASC Run Time,简称ASC RT)。
具体地,上述转换规则可以用转换规则表来表示,可参照表1。
表1



基于上述转换规则,以表2为例说明转换前后的代码。
表2

ARM汇编代码ASCadd r0,r1,r2,1sl#2add(r0,r1,r2,ls1,2);vmull.u16q8,d24,d30[0]vmull.u16(q8,d24,d30,0);vmull.s32     q8,d0,d4vmull.s32(q8,d0,d4);

需要说明的是,将上述ASC RT至C++IDE中后,ASC RT可以基于C++,实现ASC各仿真指令的实际功能。举例说明:
例1:对于ARM基本指令add指令,具体实现如下:


例2:对于Neon的vmull.u16仿真指令,具体实现如下:
void VMULL::u16(Qd, Dn, Dm, lane)
{
提取Dn[0]的高、低16位
提取Dn[1]的高、低16位
将Dn[0]的低16位与Dm的第lane个元素进行相乘,结果放到将Qd[0]
将Dn[0]的高16位与Dm的第lane个元素进行相乘,结果放到将Qd[1]
将Dn[1]的低16位与Dm的第lane个元素进行相乘,结果放到将Qd[2]
将Dn[1]的低16位与Dm的第lane个元素进行相乘,结果放到将Qd[3]
}
例3:对于Neon的vmull.s32仿真指令,具体实现如下:
void VMULL::s32(Qd,Dn,Dm)
{
提取Dn的高、低16位
提取Dm的高、低16位
将Dn、Dm的低16进行64位相乘,结果放到Qd的低32位
将Dn、Dm的高16进行64位相乘,结果放到Qd的高32位
}
进一步地,基于C++IDE进行调试,ASC RT可以在任何C++IDE调试器 (Debugger)中进行调试,以下述表3中的实际代码片段为例,举例说明。
表3

启动C++IDE,假设运行到“vmull.s32(q8,d0,d4);”语句,对该语句进行调试,以下代码为ASC RT中vmull.s32(q8,d0, d4)的实际代码逻辑:

其中,Qd、Dn、Dm是三个形参,在语法形式上与实际参数q8、d0、d4保持一致。实验表明,上述语句调试后的结果与在真实ARM环境中调试的结果是一致的。该语句调试完毕,进而进行下一语句“vmull.s32(q9,d1,d5);”的调试。
图2为本发明提供的ARM汇编代码调试处理装置实施例一的结构示意图,如图2所示,所述装置包括:转换模块201和调试模块202,其中:
转换模块201,用于根据转换规则,将ARM汇编代码转换为ARM汇编仿真代码ASC,所述ASC为使用C++语法形式表示的ARM汇编代码;调试模块202,用于应用C++集成开放环境对所述ASC进行调试。
上述模块用于执行前述方法实施例,其实现原理和技术效果类似,在此 不再赘述。
进一步地,所述转换规则包括以下各转换子规则之一或其组合:ARM普通指令转换子规则、ARM寄存器转换子规则、ARM常量转换子规则、ARM桶形移位器转换子规则、NEON标量转换子规则、ARM Neon指令转换子规则。
举例说明:所述ARM普通指令转换子规则包括:将所述ARM普通指令转换为C++语法形式中的函数。所述ARM寄存器转换子规则包括:将所述ARM寄存器转换为C++语法形式中的全局变量。所述ARM常量转换子规则包括:将所述ARM常量转换为C++语法形式中的常量。所述NEON标量转换子规则包括:将所述NEON标量转换为C++语法形式中的数组和常量,其中,所述常量为所述数组的索引。所述ARM桶形移位器转换子规则包括:将所述ARM桶形移位器转换为C++语法形式中的枚举值。所述ARM Neon指令转换子规则包括:将所述ARM Neon指令转换为C++语法形式中的对象和成员函数。
本发明实施例还提供一种ARM汇编代码调试处理装置,包括:处理器。
该处理器用于根据转换规则,将ARM汇编代码转换为ARM汇编仿真代码ASC,所述ASC为使用C++语法形式表示的ARM汇编代码;应用C++集成开放环境对所述ASC进行调试。
其中,所述转换规则包括以下各转换子规则之一或其组合:ARM普通指令转换子规则、ARM寄存器转换子规则、ARM常量转换子规则、ARM桶形移位器转换子规则、NEON标量转换子规则、ARM Neon指令转换子规则。
具体地,举例说明,所述ARM普通指令转换子规则包括:将所述ARM普通指令转换为C++语法形式中的函数。所述ARM寄存器转换子规则包括:将所述ARM寄存器转换为C++语法形式中的全局变量。所述ARM常量转换子规则包括:将所述ARM常量转换为C++语法形式中的常量。所述NEON标量转换子规则包括:将所述NEON标量转换为C++语法形式中的数组和常量,其中,所述常量为所述数组的索引。所述ARM桶形移位器转换子规则包括:将所述ARM桶形移位器转换为C++语法形式中的枚举值。所述ARMNeon指令转换子规则包括:将所述ARM Neon指令转换为C++语法形式中的对象和成员函数。
该装置用于执行前述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

ARM汇编代码调试处理方法及装置.pdf_第1页
第1页 / 共14页
ARM汇编代码调试处理方法及装置.pdf_第2页
第2页 / 共14页
ARM汇编代码调试处理方法及装置.pdf_第3页
第3页 / 共14页
点击查看更多>>
资源描述

《ARM汇编代码调试处理方法及装置.pdf》由会员分享,可在线阅读,更多相关《ARM汇编代码调试处理方法及装置.pdf(14页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN104142886A43申请公布日20141112CN104142886A21申请号201310173636122申请日20130510G06F11/3620060171申请人华为软件技术有限公司地址210012江苏省南京市雨花台区安德门94号72发明人明亮何士双74专利代理机构北京同立钧成知识产权代理有限公司11205代理人刘芳54发明名称ARM汇编代码调试处理方法及装置57摘要本发明实施例提供一种ARM汇编代码调试处理方法及装置,该方法包括根据转换规则,将ARM汇编代码转换为ARM汇编仿真代码ASC,所述ASC为使用C语法形式表示的ARM汇编代码;应用C集成开放环境对所述。

2、ASC进行调试。本发明实施例中,根据转换规则将ARM汇编代码转换为ASC,然后就可以应用CIDE对该ASC进行调试,而无需再依赖于专业的特定的仿真器,也可以实现快速支持ARM最新指令集,使得相关产品的开发更加灵活、可扩展。51INTCL权利要求书2页说明书10页附图1页19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书10页附图1页10申请公布号CN104142886ACN104142886A1/2页21一种ARM汇编代码调试处理方法,其特征在于,包括根据转换规则,将ARM汇编代码转换为ARM汇编仿真代码ASC,所述ASC为使用C语法形式表示的ARM汇编代码;应用C集成开放环。

3、境对所述ASC进行调试。2根据权利要求1所述的方法,其特征在于,所述转换规则包括以下各转换子规则之一或其组合ARM普通指令转换子规则、ARM寄存器转换子规则、ARM常量转换子规则、ARM桶形移位器转换子规则、NEON标量转换子规则、ARMNEON指令转换子规则。3根据权利要求2所述的方法,其特征在于,所述ARM普通指令转换子规则包括将所述ARM普通指令转换为C语法形式中的函数。4根据权利要求2所述的方法,其特征在于,所述ARM寄存器转换子规则包括将所述ARM寄存器转换为C语法形式中的全局变量。5根据权利要求2所述的方法,其特征在于,所述ARM常量转换子规则包括将所述ARM常量转换为C语法形式中。

4、的常量。6根据权利要求2所述的方法,其特征在于,所述NEON标量转换子规则包括将所述NEON标量转换为C语法形式中的数组和常量,其中,所述常量为所述数组的索引。7根据权利要求2所述的方法,其特征在于,所述ARM桶形移位器转换子规则包括将所述ARM桶形移位器转换为C语法形式中的枚举值。8根据权利要求2所述的方法,其特征在于,所述ARMNEON指令转换子规则包括将所述ARMNEON指令转换为C语法形式中的对象和成员函数。9一种ARM汇编代码调试处理装置,其特征在于,包括转换模块,用于根据转换规则,将ARM汇编代码转换为ARM汇编仿真代码ASC,所述ASC为使用C语法形式表示的ARM汇编代码;调试模。

5、块,用于应用C集成开放环境对所述ASC进行调试。10根据权利要求9所述的装置,其特征在于,所述转换规则包括以下各转换子规则之一或其组合ARM普通指令转换子规则、ARM寄存器转换子规则、ARM常量转换子规则、ARM桶形移位器转换子规则、NEON标量转换子规则、ARMNEON指令转换子规则。11根据权利要求10所述的装置,其特征在于,所述ARM普通指令转换子规则包括将所述ARM普通指令转换为C语法形式中的函数。12根据权利要求10所述的装置,其特征在于,所述ARM寄存器转换子规则包括将所述ARM寄存器转换为C语法形式中的全局变量。13根据权利要求10所述的装置,其特征在于,所述ARM常量转换子规则。

6、包括将所述ARM常量转换为C语法形式中的常量。14根据权利要求10所述的装置,其特征在于,所述NEON标量转换子规则包括将所述NEON标量转换为C语法形式中的数组和常量,其中,所述常量为所述数组的索引。15根据权利要求10所述的装置,其特征在于,所述ARM桶形移位器转换子规则包括将所述ARM桶形移位器转换为C语法形式中的枚举值。16根据权利要求10所述的装置,其特征在于,所述ARMNEON指令转换子规则包括权利要求书CN104142886A2/2页3将所述ARMNEON指令转换为C语法形式中的对象和成员函数。权利要求书CN104142886A1/10页4ARM汇编代码调试处理方法及装置技术领域。

7、0001本发明涉及通信技术,尤其涉及一种ARM汇编代码调试处理方法及装置。背景技术0002高级精简指令集机器(ADVANCEDRISCMACHINES,简称ARM)体系结构目前已经大面积运用在移动平台中,例如手机、平板电脑等。由于对功耗的敏感性,开发低功耗、高性能的应用成为提升用户体验的关键途径之一。0003对于性能敏感的代码,一般采用汇编及其变体,如内联汇编、INTRINSIC等方式进行编写,其中INTRINSIC为特定于某种编译器的用于替代内联汇编的语法。内联汇编和INTRINSIC都需要特定编译器支持,特别地,对于不同的INTRINSIC还需要不同的编译器支持,因此使用INTRINSIC。

8、会降低代码的可移植性。而普通的汇编则只需要相应的汇编器支持即可,移植性能较好。但是,汇编代码的编写相对于C等代码的编写更容易出错,因而汇编代码的调试显得尤为重要。随着ARM指令集架构不断升级,如果没有仿真器进行单步调试,那么进行函数、功能模块集成将变得异常困难。0004现有技术中,对于ARM汇编指令的调试,是使用相应的指令集仿真器,例如WINCE所使用的VISUALSTUDIO,塞班(SYMBIAN)系统所使用的CARBIDE、ARM官方的REALVIEW套件。0005但是,采用现有技术的方法,如果开发、调试新的指令集代码需要等待仿真环境的更新,而这些环境的更新时间也无法保证,往往会影响产品的。

9、开发进度。发明内容0006本发明提供一种ARM汇编代码调试处理方法及装置,用于解决ARM汇编代码必须使用特定仿真器进行调试的问题。0007本发明实施例第一方面提供一种ARM汇编代码调试处理方法,包括0008根据转换规则,将ARM汇编代码转换为ARM汇编仿真代码ASC,所述ASC为使用C语法形式表示的ARM汇编代码;0009应用C集成开放环境对所述ASC进行调试。0010结合第一方面,在第一方面的第一种可能的实施方式中,所述转换规则包括以下各转换子规则之一或其组合0011ARM普通指令转换子规则、ARM寄存器转换子规则、ARM常量转换子规则、ARM桶形移位器转换子规则、NEON标量转换子规则、A。

10、RMNEON指令转换子规则。0012结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,所述ARM普通指令转换子规则包括将所述ARM普通指令转换为C语法形式中的函数。0013结合第一方面的第一种可能的实施方式,在第一方面的第三种可能的实施方式中,所述ARM寄存器转换子规则包括将所述ARM寄存器转换为C语法形式中的全局变说明书CN104142886A2/10页5量。0014结合第一方面的第一种可能的实施方式,在第一方面的第四种可能的实施方式中,所述ARM常量转换子规则包括将所述ARM常量转换为C语法形式中的常量。0015结合第一方面的第一种可能的实施方式,在第一方面的第五种可。

11、能的实施方式中,所述NEON标量转换子规则包括将所述NEON标量转换为C语法形式中的数组和常量,其中,所述常量为所述数组的索引。0016结合第一方面的第一种可能的实施方式,在第一方面的第六种可能的实施方式中,所述ARM桶形移位器转换子规则包括将所述ARM桶形移位器转换为C语法形式中的枚举值。0017结合第一方面的第一种可能的实施方式,在第一方面的第七种可能的实施方式中,所述ARMNEON指令转换子规则包括将所述ARMNEON指令转换为C语法形式中的对象和成员函数。0018本发明实施例第二方面提供一种ARM汇编代码调试处理装置,包括0019转换模块,用于根据转换规则,将ARM汇编代码转换为ARM。

12、汇编仿真代码ASC,所述ASC为使用C语法形式表示的ARM汇编代码;0020调试模块,用于应用C集成开放环境对所述ASC进行调试。0021结合第二方面,在第二方面的第一种可能的实施方式中,所述转换规则包括以下各转换子规则之一或其组合0022ARM普通指令转换子规则、ARM寄存器转换子规则、ARM常量转换子规则、ARM桶形移位器转换子规则、NEON标量转换子规则、ARMNEON指令转换子规则。0023结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,所述ARM普通指令转换子规则包括将所述ARM普通指令转换为C语法形式中的函数。0024结合第二方面的第一种可能的实施方式,在第。

13、二方面的第三种可能的实施方式中,所述ARM寄存器转换子规则包括将所述ARM寄存器转换为C语法形式中的全局变量。0025结合第二方面的第一种可能的实施方式,在第二方面的第四种可能的实施方式中,所述ARM常量转换子规则包括将所述ARM常量转换为C语法形式中的常量。0026结合第二方面的第一种可能的实施方式,在第二方面的第五种可能的实施方式中,所述NEON标量转换子规则包括将所述NEON标量转换为C语法形式中的数组和常量,其中,所述常量为所述数组的索引。0027结合第二方面的第一种可能的实施方式,在第二方面的第六种可能的实施方式中,所述ARM桶形移位器转换子规则包括将所述ARM桶形移位器转换为C语法。

14、形式中的枚举值。0028结合第二方面的第一种可能的实施方式,在第二方面的第七种可能的实施方式中,所述ARMNEON指令转换子规则包括将所述ARMNEON指令转换为C语法形式中的对象和成员函数。0029本发明实施例中,根据转换规则将ARM汇编代码转换为ASC,然后就可以应用CIDE对该ASC进行调试,而无需再依赖于专业的特定的仿真器,也可以实现快速支持ARM说明书CN104142886A3/10页6最新指令集,使得相关产品的开发更加灵活、可扩展。附图说明0030为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中。

15、的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。0031图1为本发明提供的ARM汇编代码调试处理方法实施例一的流程示意图;0032图2为本发明提供的ARM汇编代码调试处理装置实施例一的结构示意图。具体实施方式0033为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。0034。

16、图1为本发明提供的ARM汇编代码调试处理方法实施例一的流程示意图,如图1所示,该流程包括0035S101、根据转换规则,将ARM汇编代码转换为ARM汇编仿真代码(ARMSIMULATEDCODE,简称ASC),该ASC为使用C语法形式表示的ARM汇编代码。0036该转换规则为将ARM汇编代码转换为按照C语法形式表示的ARM汇编代码的规则。0037S102、应用C集成开放环境(CINTEGRATEDDEVELOPMENTENVIRONMENT,简称CIDE)对上述ASC进行调试。0038本实施例中,根据转换规则将ARM汇编代码转换为ASC,然后就可以应用CIDE对该ASC进行调试,而无需再依赖于。

17、专业的仿真器,也可以实现快速支持ARM最新指令集,使得相关产品的开发更加灵活、可扩展。0039进一步地,上述转换规则包括以下各转换子规则之一或其组合ARM普通指令转换子规则、ARM寄存器转换子规则、ARM常量转换子规则、ARM桶形移位器转换子规则、NEON标量转换子规则、ARMNEON指令转换子规则。0040根据上述转换子规则,在实现转换时,将ARM汇编代码划分为ARM普通指令、ARM寄存器、ARM常量、ARM桶形移位器、NEON标量、ARMNEON指令,这样根据上述转换子规则分别进行转换,以获取转换后的ASC,这样可以利用C代码中的全局变量、函数、宏、枚举值、重载等特性,根据上述转换规则获得。

18、能够在CIDE中进行调试的代码。0041举例说明,ARM普通指令转换子规则可以是将ARM普通指令转换为C语法形式中的函数,例如将“ADD”转换为“ADD”,“ADD”为ARM普通指令,“ADD”为C语法形式中的函数。0042类似地,ARM寄存器转换子规则可以为将所述ARM寄存器转换为C语法形式中的全局变量,例如,将“R0,R1,R2”转换为“R0,R1,R2”;将“Q8,D0,D4”转换为“Q8,D0,D4”。0043ARM常量转换子规则可以为将所述ARM常量转换为C语法形式中的常量,例如,说明书CN104142886A4/10页7将“2”转换为“2”。0044NEON标量转换子规则可以为将所。

19、述NEON标量转换为C语法形式中的数组和常量,例如将ARM汇编代码中的NEON标量“D300”转换为“D30,0”,其中“0”表示该数组D30的索引。0045ARM桶形移位器转换子规则可以为将所述ARM桶形移位器转换为C语法形式中的枚举值,例如将“LSL”转换为“LSL”。0046ARMNEON指令转换子规则可以为将所述ARMNEON指令转换为C语法形式中的对象和成员函数例如,将“VMULLU16”转换为“VMULLU16”。0047当然,具体实现过程中并不以上述例子为限。0048在获取到上述ASC之后,为了使该ASC能后在CIDE中运行,进一步地在ASC中添加程序运行时限,以获得能够在CID。

20、E中运行的ASC运行时(ASCRUNTIME,简称ASCRT)。0049具体地,上述转换规则可以用转换规则表来表示,可参照表1。0050表100510052说明书CN104142886A5/10页80053说明书CN104142886A6/10页90054基于上述转换规则,以表2为例说明转换前后的代码。0055表20056ARM汇编代码ASCADDR0,R1,R2,1SL2ADDR0,R1,R2,LS1,2VMULLU16Q8,D24,D300VMULLU16Q8,D24,D30,0VMULLS32Q8,D0,D4VMULLS32Q8,D0,D40057需要说明的是,将上述ASCRT至CIDE。

21、中后,ASCRT可以基于C,实现ASC各仿真指令的实际功能。举例说明0058例1对于ARM基本指令ADD指令,具体实现如下0059说明书CN104142886A7/10页1000600061例2对于NEON的VMULLU16仿真指令,具体实现如下0062VOIDVMULLU16QD,DN,DM,LANE00630064提取DN0的高、低16位0065提取DN1的高、低16位0066将DN0的低16位与DM的第LANE个元素进行相乘,结果放到将QD00067将DN0的高16位与DM的第LANE个元素进行相乘,结果放到将QD10068将DN1的低16位与DM的第LANE个元素进行相乘,结果放到将Q。

22、D20069将DN1的低16位与DM的第LANE个元素进行相乘,结果放到将QD300700071例3对于NEON的VMULLS32仿真指令,具体实现如下0072VOIDVMULLS32QD,DN,DM说明书CN104142886A108/10页1100730074提取DN的高、低16位0075提取DM的高、低16位0076将DN、DM的低16进行64位相乘,结果放到QD的低32位0077将DN、DM的高16进行64位相乘,结果放到QD的高32位00780079进一步地,基于CIDE进行调试,ASCRT可以在任何CIDE调试器(DEBUGGER)中进行调试,以下述表3中的实际代码片段为例,举例说。

23、明。0080表300810082启动CIDE,假设运行到“VMULLS32Q8,D0,D4;”语句,对该语句进行调试,以下代码为ASCRT中VMULLS32Q8,D0,D4的实际代码逻辑00830084其中,QD、DN、DM是三个形参,在语法形式上与实际参数Q8、D0、D4保持一致。实验表明,上述语句调试后的结果与在真实ARM环境中调试的结果是一致的。该语句调试完毕,进而进行下一语句“VMULLS32Q9,D1,D5;”的调试。0085图2为本发明提供的ARM汇编代码调试处理装置实施例一的结构示意图,如图2所示,所述装置包括转换模块201和调试模块202,其中0086转换模块201,用于根据转。

24、换规则,将ARM汇编代码转换为ARM汇编仿真代码ASC,说明书CN104142886A119/10页12所述ASC为使用C语法形式表示的ARM汇编代码;调试模块202,用于应用C集成开放环境对所述ASC进行调试。0087上述模块用于执行前述方法实施例,其实现原理和技术效果类似,在此不再赘述。0088进一步地,所述转换规则包括以下各转换子规则之一或其组合ARM普通指令转换子规则、ARM寄存器转换子规则、ARM常量转换子规则、ARM桶形移位器转换子规则、NEON标量转换子规则、ARMNEON指令转换子规则。0089举例说明所述ARM普通指令转换子规则包括将所述ARM普通指令转换为C语法形式中的函数。

25、。所述ARM寄存器转换子规则包括将所述ARM寄存器转换为C语法形式中的全局变量。所述ARM常量转换子规则包括将所述ARM常量转换为C语法形式中的常量。所述NEON标量转换子规则包括将所述NEON标量转换为C语法形式中的数组和常量,其中,所述常量为所述数组的索引。所述ARM桶形移位器转换子规则包括将所述ARM桶形移位器转换为C语法形式中的枚举值。所述ARMNEON指令转换子规则包括将所述ARMNEON指令转换为C语法形式中的对象和成员函数。0090本发明实施例还提供一种ARM汇编代码调试处理装置,包括处理器。0091该处理器用于根据转换规则,将ARM汇编代码转换为ARM汇编仿真代码ASC,所述A。

26、SC为使用C语法形式表示的ARM汇编代码;应用C集成开放环境对所述ASC进行调试。0092其中,所述转换规则包括以下各转换子规则之一或其组合ARM普通指令转换子规则、ARM寄存器转换子规则、ARM常量转换子规则、ARM桶形移位器转换子规则、NEON标量转换子规则、ARMNEON指令转换子规则。0093具体地,举例说明,所述ARM普通指令转换子规则包括将所述ARM普通指令转换为C语法形式中的函数。所述ARM寄存器转换子规则包括将所述ARM寄存器转换为C语法形式中的全局变量。所述ARM常量转换子规则包括将所述ARM常量转换为C语法形式中的常量。所述NEON标量转换子规则包括将所述NEON标量转换为。

27、C语法形式中的数组和常量,其中,所述常量为所述数组的索引。所述ARM桶形移位器转换子规则包括将所述ARM桶形移位器转换为C语法形式中的枚举值。所述ARMNEON指令转换子规则包括将所述ARMNEON指令转换为C语法形式中的对象和成员函数。0094该装置用于执行前述方法实施例,其实现原理和技术效果类似,在此不再赘述。0095在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽。

28、略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。0096所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。0097另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以说明书CN104142886A1210/10页13是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既。

29、可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。0098上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(PROCESSOR)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括U盘、移动硬盘、只读存储器(READONLYMEMORY,ROM)、随机存取存储器(RANDOMACCESSMEMORY,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。0099最后应说明的是以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。说明书CN104142886A131/1页14图1图2说明书附图CN104142886A14。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1