LDRA - Testbed汇编语言使用指南1.1

更新时间:2023-10-06 07:42:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

LDRA Testbed

汇 编 语 言 使 用 指 南

www.visionmc.com

联系电话: 021-68534562(上海),010-62131690(北京)

028-86527582(成都),0755-3581788(深圳)

LDRA TESTBED ........................................................................................................................................ 1 1. TESTBED对汇编分析前对ASM文件的文件格式要求 ..................................................................... 1 1.1程序全部使用大写 ................................................................................................................... 1 1.2 在程序体里不能有伪指令 .................................................................................................. 1 1.3过程中包含过程 ....................................................................................................................... 1 1.4 从一个过程之中跳转到另一个过程中 .................................................................................. 2 1.5 散转指令的问题 ...................................................................................................................... 2 1.6 $符号的问题 ............................................................................................................................ 2 1.7 标号的问题 .............................................................................................................................. 3 1.8 间接寻址问题 .......................................................................................................................... 3 1.9 函数标号 .................................................................................................................................. 3 1.10 程序中间有伪指令 ................................................................................................................ 3 1.11 8031汇编程序的主程序 ....................................................................................................... 4 1.12 宏汇编程序中宏展开的问题 ................................................................................................ 4 2. 汇编程序示例................................................................................................................................. 5 2.1 宏汇编的例子程序 .................................................................................................................. 5 2.2 8031汇编的例子程序 ............................................................................................................. 6 2.3 TI TMS320C2xx/3x汇编的例子程序 ..................................................................................... 9 3. 常见问题解决............................................................................................................................... 11 3.1 分析时提示ERROR 311 OCCURRED IN MACRO EXPANSION的错误 ................................... 11 3.2 选择新的文件分析提示无法为该文件创建ID ................................................................... 11 3.3 宏汇编Testbed7.09动态分析历史文件问题 .................................................................... 11 3.4 宏汇编系统测试的模板问题 ................................................................................................ 11 4.TESTBED FOR TMS320C3X汇编的使用注意及问题 ........................................................................... 12 4.1条件编译的问题: ................................................................................................................. 12 4.2 BNZD BZD 等的问题 .......................................................................................................... 12 4.3宏替换的问题 ......................................................................................................................... 12 4.4插桩模板的问题 ..................................................................................................................... 12 4.5 Testbed TiC3x(7.09)的插桩设置问题 .......................................................................... 13 5.TMS320C25汇编插桩模版 ............................................................................................................. 14 5.1插桩模板 ................................................................................................................................. 14

Testbed 汇编语言使用指对源文件的要求 1. Testbed对汇编分析前对ASM文件的文件格式要求

1.1程序全部使用大写

采用Testbed对汇编代码进行分析的时候,将汇编代码全部转换为大写的,否则Testbed进行分析的时候在函数的调用关系上会出错;具体的说就是如果函数名不是全大写,Testbed不能正确的分析出调用关系,会显示是外部函数;(以下说明和分析都以Testbed MASM 7.07为例,其它版本可能有不同)

1.2 在程序体里不能有伪指令

由于汇编的灵活和不规范性,所以程序中往往有在程序体中有常量定义等伪指令,这样Testbed在分析的时候有时就不能正确地分析这些程序后面的代码;所以在程序体内不要有伪指令,相关的伪指令都应当放到程序体外(proc 和 endp之外);

1.3过程中包含过程

不规范的程序写法,往往会有在过程中包含过程的情况,比如(以宏汇编为例):

START PROC

OR AX,AX JNZ NR00 XOR CL,CL JMP NR00 NR00:

CMP AX,4000H CALL NORAD

JMP START

NORAD PROC NEAR

OR AX,AX XOR CL,CL NREND: RET NORAD ENDP

START ENDP

START PROC

OR AX,AX JNZ NR00 XOR CL,CL JMP NR00 NR00:

CMP AX,4000H CALL NORAD

JMP START START ENDP

NORAD PROC NEAR OR AX,AX

XOR CL,CL NREND: RET NORAD ENDP

上面这种情况需要修改为:

1 上海创景计算机系统有限公司 1 Testbed 汇编语言使用指对源文件的要求 如果START是程序中的主程序,或者相当于主程序的话,那么在程序语法和功能没有问题的前提下可以将程序改为:

START:

这样Testbed的Callgraph中就不会同时出现

START函数和START(SEGMENT)了,这样的程序结构才是更加合理的。(SEGMENT)的名字就是ASM文件开头NAME的名字。

这种处理只针对于程序中的主程序或和主程序类似的程序。 注:

OR AX,AX JNZ NR00 XOR CL,CL JMP NR00 NR00:

CMP AX,4000H CALL NORAD JMP START

NORAD PROC NEAR OR AX,AX

XOR CL,CL NREND: RET NORAD ENDP

如果文件中只有一个主程序,没有子程序,那么在主程序结尾处最后的一个插装点放的位置会有问题,会放到 CODE ENDS 和 END 之间,这样编译会报错,应当把它放到CODE ENDS 前面。

1.4 从一个过程之中跳转到另一个过程中

程序中存在从一个过程中直接调转到另一个过程的情况,而不是通过函数调用,这种情况是一个典型的非结构化编程,需要进行修改,改为通过函数调用的形式。

程序中一个过程中多个ret的情况Testbed7.07及以后版本支持,以前的版本不支持,testbed会认为第一个ret处程序就结束了。

1.5 散转指令的问题

汇编程序中常会有散转指令的使用,其实就是类似于查表跳转,这在汇编中使用很方便,简单的语句就可以实现复杂的功能,但从程序分析的角度讲是非规范的,Testbed目前没办法支持,当前只有不分析相关代码或者对代码进行修改,改为用判断跳转来实现。

1.6 $符号的问题

汇编语言中的$符号Testbed是不支持的,需要进行修改,如:

JMP CMP JMP

$+2

AX,8000H LDRA_TEST AX,8000H

需要改为:

LDRA_TEST: CMP

2 上海创景计算机系统有限公司 2 Testbed 汇编语言使用指对源文件的要求 1.7 标号的问题

我们建议在程序中标号单独占一行,这样可以避免一些错误的发生(当然这不

是强制的),如下:

NR2:

CMP AX,8000H

1.8 间接寻址问题

宏汇编中的间接寻址,Testbed在静态分析的时候不能正确进行识别,如: Call [si+2]

因此如果程序中有类似用法的话,Testbed的静态分析结果会有不正确的地方,在调用关系图中可以发现相关异常;解决的办法就是将这种用法进行修改,改为普通的调用模式。

1.9 函数标号

在DSP的汇编中,如果有如下写法: TEST: LDI xxx

Testbed在分析的时候会有问题,建议都改为: TEST:

LDI xxx

1.10 程序中间有伪指令

在DSP的汇编中,经常有程序在多处进行数据声明,这样会给Testbed的分析带来问题,如:

.data . . .text . . . .data . . .text . . .

将后面的数据声明等伪指令都注释或者删除。

3 上海创景计算机系统有限公司 3

本文来源:https://www.bwwdw.com/article/jjgd.html

Top