LDRA_Testbed汇编语言使用指南1.0.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LDRA_Testbed汇编语言使用指南1.0

LDRA Testbed 汇 编 语 言 使 用 指 南 联系电话: 021上海),010北京) 028成都),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 2. 汇编程序示例 4 2.1 宏汇编的例子程序 4 2.2 8031汇编的例子程序 5 2.3 TI TMS320C2xx/3x汇编的例子程序 8 3. 常见问题解决 10 3.1 分析时提示ERROR 311 OCCURRED IN MACRO EXPANSION的错误 10 3.2 选择新的文件分析提示无法为该文件创建ID 10 3.3 宏汇编Testbed7.09动态分析历史文件问题 10 3.4 宏汇编系统测试的模板问题 10 4. Testbed for TMS320C3x汇编的使用注意及问题 11 4.1条件编译的问题: 11 4.2 BNZD BZD 等的问题 11 4.3宏替换的问题 11 4.4插桩模板的问题 11 1. Testbed对汇编分析前对ASM文件的文件格式要求 1.1程序全部使用大写 采用Testbed对汇编代码进行分析的时候,将汇编代码全部转换为大写的,否则Testbed进行分析的时候在函数的调用关系上会出错;具体的说就是如果函数名不是全大写,Testbed不能正确的分析出调用关系,会显示是外部函数;(以下说明和分析都以Testbed MASM 7.07为例,其它版本可能有不同) 1.2 在程序体里不能有伪指令 由于汇编的灵活和不规范性,所以程序中往往有在程序体中有常量定义等伪指令,这样Testbed在分析的时候有时就不能正确地分析这些程序后面的代码;所以在程序体内不要有伪指令,相关的伪指令都应当放到程序体外(proc 和 endp之外); 1.3过程中包含过程 不规范的程序写法,往往会有在过程中包含过程的情况,比如(以宏汇编为例): 上面这种情况需要修改为: 如果START是程序中的主程序,或者相当于主程序的话,那么在程序语法和功能没有问题的前提下可以将程序改为: 这样Testbed的Callgraph中就不会同时出现START函数和START(SEGMENT)了,这样的程序结构才是更加合理的。(SEGMENT)的名字就是ASM文件开头NAME的名字。 这种处理只针对于程序中的主程序或和主程序类似的程序。 注: 1.4 从一个过程之中跳转到另一个过程中 程序中存在从一个过程中直接调转到另一个过程的情况,而不是通过函数调用,这种情况是一个典型的非结构化编程,需要进行修改,改为通过函数调用的形式。 程序中一个过程中多个ret的情况Testbed7.07及以后版本支持,以前的版本不支持,testbed会认为第一个ret处程序就结束了。 1.5 散转指令的问题 汇编程序中常会有散转指令的使用,其实就是类似于查表跳转,这在汇编中使用很方便,简单的语句就可以实现复杂的功能,但从程序分析的角度讲是非规范的,Testbed目前没办法支持,当前只有不分析相关代码或者对代码进行修改,改为用判断跳转来实现。 1.6 $符号的问题 汇编语言中的$符号Testbed是不支持的,需要进行修改,如: JMP $+2 CMP AX,8000H 需要改为: JMP LDRA_TEST LDRA_TEST: CMP AX,8000H 1.7 标号的问题 我们建议在程序中标号单独占一行,这样可以避免一些错误的发生(当然这不是强制的),如下: NR2: CMP AX,8000H 1.8 间接寻址问题 宏汇编中的间接寻址,Testbed在静态分析的时候不能正确进行识别,如:      Call [si+2] 2. 汇编程序示例 2.1 宏汇编的例子程序 下面给出一个宏汇编的例子程序,供参考: NAME TEST DGROUP GROUP DATA, STACK,BSS DATA SEGMENT WORD PUBLIC DATA DATA ENDS BSS SEGMENT WORD PUBLIC BSS BSS ENDS STACK SEGMENT STACK STACK STA

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档