CN102591698A - 一种单片机反汇编的方法 - Google Patents

一种单片机反汇编的方法 Download PDF

Info

Publication number
CN102591698A
CN102591698A CN2011104000401A CN201110400040A CN102591698A CN 102591698 A CN102591698 A CN 102591698A CN 2011104000401 A CN2011104000401 A CN 2011104000401A CN 201110400040 A CN201110400040 A CN 201110400040A CN 102591698 A CN102591698 A CN 102591698A
Authority
CN
China
Prior art keywords
processor
instruction
machine code
address
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2011104000401A
Other languages
English (en)
Other versions
CN102591698B (zh
Inventor
卢琼辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhangzhou Haiyin Intelligent Information Technology Co.,Ltd.
Original Assignee
FUJIAN ERLING ELECTRONIC Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by FUJIAN ERLING ELECTRONIC Co Ltd filed Critical FUJIAN ERLING ELECTRONIC Co Ltd
Priority to CN201110400040.1A priority Critical patent/CN102591698B/zh
Publication of CN102591698A publication Critical patent/CN102591698A/zh
Application granted granted Critical
Publication of CN102591698B publication Critical patent/CN102591698B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种单片机反汇编的方法,根据汇编语言指令系统的操作码逐层分析指令,能清晰、快速分析指令,并对被跳转的地址和被调用的地址加入地址标号,有利于程序的阅读,且可使用汇编器重新汇编,同时采用两次分析机器码,同时生成LST列表文件和ASM可再汇编文件。采用本发明,有助于源代码编译后机器码的检查和优化编译,也可用于找回丢失的源代码。

Description

一种单片机反汇编的方法
技术领域
本发明涉及反汇编的技术领域,特别是涉及一种单片机反汇编的方法。
背景技术
单片机软件的一般开发过程是,将源代码经过汇编器汇编或C语言编译器编译后生成HEX格式或BIN格式的机器码,将此机器码写入机器的FLASH程序存储器中运行。如果编译器有缺陷或者编译控制参数设置不当,引起编译出来的机器码有错误,会导致程序无法正常运行。有时候需要看一下编译后代码的优化效果。另外,当原始的C语言源代码丢失时,希望能从机器码中找到源代码。因此,需要设计一种能分析机器码程序的反汇编工具软件,将机器码转换为可阅读的汇编语言程序。
发明内容
本发明的目的在于克服现有技术之不足,提供一种单片机反汇编的方法,有助于源代码编译后机器码的检查和优化编译,也可用于找回丢失的源代码。
本发明解决其技术问题所采用的技术方案是:一种单片机反汇编的方法,包括以下步骤:
步骤A,PC机的显示界面显示输入框,向输入框输入待分析的机器码文件名、待生成的反汇编目标LST文件名和待生成的反汇编目标ASM文件名;
步骤B,PC机的处理器建立临时文件并将所述的临时文件初始化为0,同时设置指令长度计算器并将所述的指令计算器初始化为0,PC的处理器将临时文件的地址和机器码文件的地址均置为0;
步骤C,PC机的处理器将机器码文件转化成二进制格式后开始第一遍分析机器码文件并获得该机器码文件的总指令长度,PC机的处理器将临时文件的地址和机器码文件的地址均加1;
步骤D,PC机的处理器开始分析机器码文件的地址所对应的指令并获得该指令的指令长度,同时将该指令长度加入指令长度计数器中;
步骤E,PC机的处理器分析步骤D所述机器码文件的地址所对应的指令,如果该指令是跳转指令或者调用指令,将跳转标志或者调用标志写入临时文件对应的地址处后转到步骤F,否则直接转到步骤F;
步骤F,PC机的处理器将步骤D所述机器码文件的地址所对应的指令的地址、机器码和该指令反汇编出来的汇编指令写入反汇编目标LST文件中;
步骤G,PC机的处理器将步骤D所述的机器码文件对应的地址与步骤D所述的指令长度相加,得到机器码文件下一条指令的起始地址,PC机的处理器将步骤C所述的临时文件对应的地址与步骤D所述的指令长度相加,得到临时文件下一条指令的起始地址,PC机的处理器判断指令计算器中的数值是否等于总指令长度,如果是则转到步骤H,否则转到步骤D;
步骤H,PC机的处理器将临时文件的地址、机器码文件的地址和指令计算器重新均置为0,并第二遍分析机器码文件并获得该机器码文件的总指令长度,PC机的处理器将临时文件的地址和机器码文件的地址均加1,PC机的处理器获得机器码文件的地址所对应指令的指令长度,同时将该指令长度加入指令长度计数器中;
步骤I,PC机的处理器开始分析所述机器码文件的地址处所对应的机器码指令并同时查询临时文件中对应的地址处是否有跳转标志或者调用标志,如果是调用标志或者跳转标志则均转到步骤J,否则转到步骤K;
步骤J,PC机的处理器将任意一个字母和步骤I所述机器码文件的地址写入反汇编目标ASM文件中;
步骤K,PC机的处理器将步骤I所述机器码文件的地址所对应的机器码指令反汇编出来的汇编指令写入反汇编目标ASM文件中;
步骤L,PC机的处理器将步骤I所述的机器码文件对应的地址与步骤H所述的指令长度相加,得到机器码文件下一条指令的起始地址,PC机的处理器将步骤I所述的临时文件对应的地址与步骤H所述的指令长度相加,得到临时文件下一条指令的起始地址,PC机的处理器判断指令计算器中的数值是否等于总指令长度,如果是结束反汇编,否则转到步骤I。
所述的步骤A包括:
步骤A1,PC机的显示界面显示第一个输入框和文字提示:请输入待分析的机器码文件名,将待分析的机器码文件名输入第一个输入框中,PC的处理器判断输入的待分析的机器码文件名是否正确,如果是则转到步骤A2,否则PC机的显示界面显示:输入的待分析的机器码文件名错误,请重新输入;
步骤A2,PC机的显示界面显示第二个输入框和文字提示:请输入待生成的反汇编目标LST文件名,将待生成的反汇编目标LST文件名输入第二个输入框中,PC的处理器判断输入的待生成的反汇编目标LST文件名是否正确,如果是则转到步骤A3,否则PC机的显示界面显示:输入的待生成的反汇编目标LST文件名错误,请重新输入;
步骤A3,PC机的显示界面显示第三个输入框和文字提示:请输入待生成的反汇编目标ASM文件名,将待生成的反汇编目标ASM文件名输入第三个输入框中,PC的处理器判断输入的待生成的反汇编目标ASM文件名是否正确,如果是则转到步骤B,否则PC机的显示界面显示:输入的待分析的机器码文件名错误,请重新输入。
所述的步骤C包括:
步骤C1,PC机的处理器将机器码文件判断输入的机器码文件的格式进行判断,如果是二进制格式则转到步骤D,否则转到步骤C2;
步骤C2,PC机的处理器将所述的机器码文件转化成二进制格式的机器码文件;
步骤C3,PC机的处理器将机器码文件转化成二进制格式后开始第一遍分析机器码文件并获得该机器码文件的总指令长度,PC机的处理器将临时文件的地址和机器码文件的地址均加1。
所述的步骤E包括:
步骤E1,PC机的处理器分析步骤D所述机器码文件的地址对应的指令并判断所述机器码文件的地址对应的指令是否为跳转指令,如果是转到步骤E2,否则转到步骤E3;
步骤E2,PC机的处理器将跳转标志写入临时文件对应的地址处;
步骤E3,PC机的处理器判断所述机器码文件的地址对应的指令是否为调用指令,如果是则转到步骤E4,否则转到步骤F;
步骤E4,PC机的处理器将调用标志写入临时文件对应的地址处。
所述的步骤I包括:
步骤I1,PC机的处理器开始分析所述机器码文件的地址处对应的机器码指令并同时查询临时文件中对应的地址处是否有跳转标志,如果是转到步骤J,否则转到转到步骤I2;
步骤I2,PC机的处理器继续查询临时文件中对应的地址处是否有调用标志,如果是转到步骤I3,否则转到转到步骤K;
步骤I3,PC机的处理器将换行指令写入反汇编目标ASM文件中后。
步骤F中所述的该指令反汇编出来的汇编指令和步骤K中所述的PC机的处理器将步骤I所述机器码文件的地址所对应的机器码指令反汇编出来的汇编指令均包括:
步骤FK1,PC机的处理器读取所述的指令的操作码;
步骤FK2,PC机的处理器分析所述的指令是否有跳转地址,如果是转到步骤FK3,否则转到步骤FK4;
步骤FK3,PC机的处理器计算出该指令的目标地址;
步骤FK4,PC机的处理器继续分析所述的指令是否有位操作,如果是转到步骤FK5,否则转到步骤FK6;
步骤FK5,PC机的处理器计算出位操作数;
步骤FK6,PC机的处理器继续分析所述的指令是否有立即数,如果是则转到步骤FK7,否则转到步骤FK8;
步骤FK7,PC机的处理器计算出立即数;
步骤FK8,PC机的处理器继续分析所述的指令是否含有寄存器,如果是则转到步骤FK9,否则转到步骤FK10;
步骤FK9,PC机的处理器获取寄存器名;
步骤FK10,PC机的处理器继续分析所述的指令是否含有存储器,如果是则转到步骤FK11,否则转到步骤FK12;
步骤FK11,PC机的处理器获得存储器的地址;
步骤FK2,PC机的处理器根据步骤FK1-FK11的分析结果拼写出完整的汇编指令。
本发明的有益效果是,能识别HEX格式或BIN格式的机器码,采用两次分析机器码,同时生成LST列表文件和ASM可再汇编文件。对被跳转的地址和被调用的地址加入地址标号,有利于程序的阅读,并且可使用汇编器重新汇编。根据汇编语言指令系统的操作码逐层分析指令,能清晰、快速分析指令。由于该方法具有通用性,因此适合于目前常见的单片机反汇编,有助于源代码编译后机器码的检查和优化编译,也可用于找回丢失的源代码。
以下结合附图及实施例对本发明作进一步详细说明;但本发明的一种单片机反汇编的方法不局限于实施例。
附图说明
图1是本发明的主流程图;
图2是本发明的步骤F中的该指令反汇编出来的汇编指令的流程图。
具体实施方式
实施例,参见图1所示,本发明的一种单片机反汇编的方法,包括以下步骤:
步骤A,PC机的显示界面显示输入框,向输入框输入待分析的机器码文件名、待生成的反汇编目标LST文件名和待生成的反汇编目标ASM文件名(如图1的框101、框102和框103所示);
步骤B,PC机的处理器建立临时文件并将所述的临时文件初始化为0,同时设置指令长度计算器并将所述的指令计算器初始化为0,PC的处理器将临时文件的地址和机器码文件的地址均置为0(如图1的框104所示);
步骤C,PC机的处理器将机器码文件转化成二进制格式后开始第一遍分析机器码文件并获得该机器码文件的总指令长度,PC机的处理器将临时文件的地址和机器码文件的地址均加1(如图1的框105和框106所示);
步骤D,PC机的处理器开始分析机器码文件的地址所对应的指令并获得该指令的指令长度,同时将该指令长度加入指令长度计数器中(如图1的框107所示);
步骤E,PC机的处理器分析步骤D所述机器码文件的地址所对应的指令,如果该指令是跳转指令或者调用指令,将跳转标志或者调用标志写入临时文件对应的地址处后转到步骤F,否则直接转到步骤F(如图1的框108、框109、框110和框111所示);
步骤F,PC机的处理器将步骤D所述机器码文件的地址所对应的指令的地址、机器码和该指令反汇编出来的汇编指令写入反汇编目标LST文件中(如图1的框112所示);
步骤G,PC机的处理器将步骤D所述的机器码文件对应的地址与步骤D所述的指令长度相加,得到机器码文件下一条指令的起始地址,PC机的处理器将步骤C所述的临时文件对应的地址与步骤D所述的指令长度相加,得到临时文件下一条指令的起始地址,PC机的处理器判断指令计算器中的数值是否等于总指令长度,如果是则转到步骤H,否则转到步骤D(如图1的框113和框114所示);
步骤H,PC机的处理器将临时文件的地址、机器码文件的地址和指令计算器重新均置为0,并第二遍分析机器码文件并获得该机器码文件的总指令长度,PC机的处理器将临时文件的地址和机器码文件的地址均加1,PC机的处理器获得机器码文件的地址所对应指令的指令长度,同时将该指令长度加入指令长度计数器中(如图1的框115和框116所示);
步骤I,PC机的处理器开始分析所述机器码文件的地址处所对应的机器码指令并同时查询临时文件中对应的地址处是否有跳转标志或者调用标志,如果是调用标志或者跳转标志则均转到步骤J,否则转到步骤K(如图1的框117、框118和框119所示);
步骤J,PC机的处理器将任意一个字母和步骤I所述机器码文件的地址写入反汇编目标ASM文件中(如图1的框117、框118和框119所示);
步骤K,PC机的处理器将步骤I所述机器码文件的地址所对应的机器码指令反汇编出来的汇编指令写入反汇编目标ASM文件中(如图1的框121所示);
步骤L,PC机的处理器将步骤I所述的机器码文件对应的地址与步骤H所述的指令长度相加,得到机器码文件下一条指令的起始地址,PC机的处理器将步骤I所述的临时文件对应的地址与步骤H所述的指令长度相加,得到临时文件下一条指令的起始地址,PC机的处理器判断指令计算器中的数值是否等于总指令长度,如果是结束反汇编,否则转到步骤I(如图1的框122和框123所示)。
所述的步骤A包括:
步骤A1,PC机的显示界面显示第一个输入框和文字提示:请输入待分析的机器码文件名,将待分析的机器码文件名输入第一个输入框中,PC的处理器判断输入的待分析的机器码文件名是否正确,如果是则转到步骤A2,否则PC机的显示界面显示:输入的待分析的机器码文件名错误,请重新输入(如图1的框101所示);
步骤A2,PC机的显示界面显示第二个输入框和文字提示:请输入待生成的反汇编目标LST文件名,将待生成的反汇编目标LST文件名输入第二个输入框中,PC的处理器判断输入的待生成的反汇编目标LST文件名是否正确,如果是则转到步骤A3,否则PC机的显示界面显示:输入的待生成的反汇编目标LST文件名错误,请重新输入(如图1的框102所示);
步骤A3,PC机的显示界面显示第三个输入框和文字提示:请输入待生成的反汇编目标ASM文件名,将待生成的反汇编目标ASM文件名输入第三个输入框中,PC的处理器判断输入的待生成的反汇编目标ASM文件名是否正确,如果是则转到步骤B,否则PC机的显示界面显示:输入的待分析的机器码文件名错误,请重新输入(如图1的框103所示)。
所述的步骤C包括:
步骤C1,PC机的处理器将机器码文件判断输入的机器码文件的格式进行判断,如果是二进制格式则转到步骤D,否则转到步骤C2(如图1的框105所示);
步骤C2,PC机的处理器将所述的机器码文件转化成二进制格式的机器码文件(如图1的框106所示);
步骤C3,PC机的处理器将机器码文件转化成二进制格式后开始第一遍分析机器码文件并获得该机器码文件的总指令长度,PC机的处理器将临时文件的地址和机器码文件的地址均加1(如图1的框107所示)。
所述的步骤E包括:
步骤E1,PC机的处理器分析步骤D所述机器码文件的地址对应的指令并判断所述机器码文件的地址对应的指令是否为跳转指令,如果是转到步骤E2,否则转到步骤E3(如图1的框108所示);
步骤E2,PC机的处理器将跳转标志写入临时文件对应的地址处(如图1的框109所示);
步骤E3,PC机的处理器判断所述机器码文件的地址对应的指令是否为调用指令,如果是则转到步骤E4,否则转到步骤F(如图1的框110所示);
步骤E4,PC机的处理器将调用标志写入临时文件对应的地址处(如图1的框111所示)。
在本实施例中,PC机的处理器先分析步骤D所述机器码文件的地址对应的指令并判断所述机器码文件的地址对应的指令是否为跳转指令后,然后再分析步骤D所述机器码文件的地址对应的指令并判断所述机器码文件的地址对应的指令是否为调用指令。另外,也可以采用PC机的处理器先分析步骤D所述机器码文件的地址对应的指令并判断所述机器码文件的地址对应的指令是否为调转指令后,然后再分析步骤D所述机器码文件的地址对应的指令并判断所述机器码文件的地址对应的指令是否为跳转指令。
所述的步骤I包括:
步骤I1,PC机的处理器开始分析所述机器码文件的地址处对应的机器码指令并同时查询临时文件中对应的地址处是否有跳转标志,如果是转到步骤J,否则转到转到步骤I2(如图1的框117所示);
步骤I2,PC机的处理器继续查询临时文件中对应的地址处是否有调用标志,如果是转到步骤I3,否则转到转到步骤K(如图1的框118所示);
步骤I3,PC机的处理器将换行指令写入反汇编目标ASM文件中后(如图1的框119所示)。如果查询到调用标志则在反汇编目标ASM文件中写入换行指令,是为了方便反汇编出来的汇编指令的阅读,因为调用指令调用的是一个模块,采用换行,阅读者就可以很清楚地知道调用模块的程序从换行后开始。
在本实施例中,PC机的处理器开始分析所述机器码文件的地址处对应的机器码指令并同时查询临时文件中对应的地址处是否有跳转标志,然后再继续查询临时文件中对应的地址处是否有调用标志。另外,也可以采用PC机的处理器开始分析所述机器码文件的地址处对应的机器码指令并同时查询临时文件中对应的地址处是否有调用标志,然后再继续查询临时文件中对应的地址处是否有跳转标志。
步骤F中所述的该指令反汇编出来的汇编指令和步骤K中所述的PC机的处理器将步骤I所述机器码文件的地址所对应的机器码指令反汇编出来的汇编指令均包括:
步骤FK1,PC机的处理器读取所述的指令的操作码(如图2的框201所示);
步骤FK2,PC机的处理器分析所述的指令是否有跳转地址,如果是转到步骤FK3,否则转到步骤FK4(如图2的框202所示);
步骤FK3,PC机的处理器计算出该指令的目标地址(如图2的框203所示);
步骤FK4,PC机的处理器继续分析所述的指令是否有位操作,如果是转到步骤FK5,否则转到步骤FK6(如图2的框204所示);
步骤FK5,PC机的处理器计算出位操作数(如图2的框205所示);
步骤FK6,PC机的处理器继续分析所述的指令是否有立即数,如果是则转到步骤FK7,否则转到步骤FK8(如图2的框206所示);
步骤FK7,PC机的处理器计算出立即数(如图2的框207所示);
步骤FK8,PC机的处理器继续分析所述的指令是否含有寄存器,如果是则转到步骤FK9,否则转到步骤FK10(如图2的框208所示);
步骤FK9,PC机的处理器获取寄存器名(如图2的框209所示);
步骤FK10,PC机的处理器继续分析所述的指令是否含有存储器,如果是则转到步骤FK11,否则转到步骤FK12(如图2的框210所示);
步骤FK11,PC机的处理器获得存储器的地址(如图2的框211所示);
步骤FK12,PC机的处理器根据步骤FK1-FK11的分析结果拼写出完整的汇编指令(如图2的框212所示)。
上述实施例仅用来进一步说明本发明的一种单片机反汇编的方法,但本发明并不局限于实施例,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均落入本发明技术方案的保护范围内。

Claims (6)

1.一种单片机反汇编的方法,其特征在于:包括以下步骤:
步骤A,PC机的显示界面显示输入框,向输入框输入待分析的机器码文件名、待生成的反汇编目标LST文件名和待生成的反汇编目标ASM文件名;
步骤B,PC机的处理器建立临时文件并将所述的临时文件初始化为0,同时设置指令长度计算器并将所述的指令计算器初始化为0,PC的处理器将临时文件的地址和机器码文件的地址均置为0;
步骤C,PC机的处理器将机器码文件转化成二进制格式后开始第一遍分析机器码文件并获得该机器码文件的总指令长度,PC机的处理器将临时文件的地址和机器码文件的地址均加1;
步骤D,PC机的处理器开始分析机器码文件的地址所对应的指令并获得该指令的指令长度,同时将该指令长度加入指令长度计数器中;
步骤E,PC机的处理器分析步骤D所述机器码文件的地址所对应的指令,如果该指令是跳转指令或者调用指令,将跳转标志或者调用标志写入临时文件对应的地址处后转到步骤F,否则直接转到步骤F;
步骤F,PC机的处理器将步骤D所述机器码文件的地址所对应的指令的地址、机器码和该指令反汇编出来的汇编指令写入反汇编目标LST文件中;
步骤G,PC机的处理器将步骤D所述的机器码文件对应的地址与步骤D所述的指令长度相加,得到机器码文件下一条指令的起始地址,PC机的处理器将步骤C所述的临时文件对应的地址与步骤D所述的指令长度相加,得到临时文件下一条指令的起始地址,PC机的处理器判断指令计算器中的数值是否等于总指令长度,如果是则转到步骤H,否则转到步骤D;
步骤H,PC机的处理器将临时文件的地址、机器码文件的地址和指令计算器重新均置为0,并第二遍分析机器码文件并获得该机器码文件的总指令长度,PC机的处理器将临时文件的地址和机器码文件的地址均加1,PC机的处理器获得机器码文件的地址所对应指令的指令长度,同时将该指令长度加入指令长度计数器中;
步骤I,PC机的处理器开始分析所述机器码文件的地址处所对应的机器码指令并同时查询临时文件中对应的地址处是否有跳转标志或者调用标志,如果是调用标志或者跳转标志则均转到步骤J,否则转到步骤K;
步骤J,PC机的处理器将任意一个字母和步骤I所述机器码文件的地址写入反汇编目标ASM文件中;
步骤K,PC机的处理器将步骤I所述机器码文件的地址所对应的机器码指令反汇编出来的汇编指令写入反汇编目标ASM文件中;
步骤L,PC机的处理器将步骤I所述的机器码文件对应的地址与步骤H所述的指令长度相加,得到机器码文件下一条指令的起始地址,PC机的处理器将步骤I所述的临时文件对应的地址与步骤H所述的指令长度相加,得到临时文件下一条指令的起始地址,PC机的处理器判断指令计算器中的数值是否等于总指令长度,如果是结束反汇编,否则转到步骤I。
2.根据权利要求1所述的单片机反汇编的方法,其特征在于:
所述的步骤A包括:
步骤A1,PC机的显示界面显示第一个输入框和文字提示:请输入待分析的机器码文件名,将待分析的机器码文件名输入第一个输入框中,PC的处理器判断输入的待分析的机器码文件名是否正确,如果是则转到步骤A2,否则PC机的显示界面显示:输入的待分析的机器码文件名错误,请重新输入;
步骤A2,PC机的显示界面显示第二个输入框和文字提示:请输入待生成的反汇编目标LST文件名,将待生成的反汇编目标LST文件名输入第二个输入框中,PC的处理器判断输入的待生成的反汇编目标LST文件名是否正确,如果是则转到步骤A3,否则PC机的显示界面显示:输入的待生成的反汇编目标LST文件名错误,请重新输入;
步骤A3,PC机的显示界面显示第三个输入框和文字提示:请输入待生成的反汇编目标ASM文件名,将待生成的反汇编目标ASM文件名输入第三个输入框中,PC的处理器判断输入的待生成的反汇编目标ASM文件名是否正确,如果是则转到步骤B,否则PC机的显示界面显示:输入的待分析的机器码文件名错误,请重新输入。
3.根据权利要求1所述的单片机反汇编的方法,其特征在于:
所述的步骤C包括:
步骤C1,PC机的处理器将机器码文件判断输入的机器码文件的格式进行判断,如果是二进制格式则转到步骤D,否则转到步骤C2;
步骤C2,PC机的处理器将所述的机器码文件转化成二进制格式的机器码文件;
步骤C3,PC机的处理器将机器码文件转化成二进制格式后开始第一遍分析机器码文件并获得该机器码文件的总指令长度,PC机的处理器将临时文件的地址和机器码文件的地址均加1。
4.根据权利要求3所述的单片机反汇编的方法,其特征在于:所述的步骤E包括:
步骤E1,PC机的处理器分析步骤D所述机器码文件的地址对应的指令并判断所述机器码文件的地址对应的指令是否为跳转指令,如果是转到步骤E2,否则转到步骤E3;
步骤E2,PC机的处理器将跳转标志写入临时文件对应的地址处;
步骤E3,PC机的处理器判断所述机器码文件的地址对应的指令是否为调用指令,如果是则转到步骤E4,否则转到步骤F;
步骤E4,PC机的处理器将调用标志写入临时文件对应的地址处。
5.根据权利要求3所述的单片机反汇编的方法,其特征在于:所述的步骤I包括:
步骤I1,PC机的处理器开始分析所述机器码文件的地址处对应的机器码指令并同时查询临时文件中对应的地址处是否有跳转标志,如果是转到步骤J,否则转到转到步骤I2;
步骤I2,PC机的处理器继续查询临时文件中对应的地址处是否有调用标志,如果是转到步骤I3,否则转到转到步骤K;
步骤I3,PC机的处理器将换行指令写入反汇编目标ASM文件中后。
6.根据权利要求1所述的单片机反汇编的方法,其特征在于:步骤F中所述的该指令反汇编出来的汇编指令和步骤K中所述的PC机的处理器将步骤I所述机器码文件的地址所对应的机器码指令反汇编出来的汇编指令均包括:
步骤FK1,PC机的处理器读取所述的指令的操作码;
步骤FK2,PC机的处理器分析所述的指令是否有跳转地址,如果是转到步骤FK3,否则转到步骤FK4;
步骤FK3,PC机的处理器计算出该指令的目标地址;
步骤FK4,PC机的处理器继续分析所述的指令是否有位操作,如果是转到步骤FK5,否则转到步骤FK6;
步骤FK5,PC机的处理器计算出位操作数;
步骤FK6,PC机的处理器继续分析所述的指令是否有立即数,如果是则转到步骤FK7,否则转到步骤FK8;
步骤FK7,PC机的处理器计算出立即数;
步骤FK8,PC机的处理器继续分析所述的指令是否含有寄存器,如果是则转到步骤FK9,否则转到步骤FK10;
步骤FK9,PC机的处理器获取寄存器名;
步骤FK10,PC机的处理器继续分析所述的指令是否含有存储器,如果是则转到步骤FK11,否则转到步骤FK12;
步骤FK11,PC机的处理器获得存储器的地址;
步骤FK2,PC机的处理器根据步骤FK1-FK11的分析结果拼写出完整的汇编指令。
CN201110400040.1A 2011-12-05 2011-12-05 一种单片机反汇编的方法 Active CN102591698B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110400040.1A CN102591698B (zh) 2011-12-05 2011-12-05 一种单片机反汇编的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110400040.1A CN102591698B (zh) 2011-12-05 2011-12-05 一种单片机反汇编的方法

Publications (2)

Publication Number Publication Date
CN102591698A true CN102591698A (zh) 2012-07-18
CN102591698B CN102591698B (zh) 2015-06-24

Family

ID=46480410

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110400040.1A Active CN102591698B (zh) 2011-12-05 2011-12-05 一种单片机反汇编的方法

Country Status (1)

Country Link
CN (1) CN102591698B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103106096A (zh) * 2012-11-27 2013-05-15 武汉大学 一种针对嵌入式微处理器的反汇编方法
CN103885770A (zh) * 2014-01-21 2014-06-25 唐道成 单片机从可执行文件找回汇编文件的实现方法
CN109947432A (zh) * 2019-03-28 2019-06-28 Oppo广东移动通信有限公司 汇编程序处理方法及相关装置
CN110457046A (zh) * 2019-08-22 2019-11-15 广州小鹏汽车科技有限公司 混合指令集程序的反汇编方法、装置、存储介质及终端

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1838074A (zh) * 2006-02-22 2006-09-27 北京金山软件有限公司 一种64位视窗操作系统下获取函数参数的方法及系统
CN101706734A (zh) * 2009-11-10 2010-05-12 中国科学院计算技术研究所 二进制翻译中间接跳转指令的翻译方法及其系统
CN101976187A (zh) * 2010-11-16 2011-02-16 广州迪庆电子科技有限公司 反编译过程中的堆栈跟踪方法、装置及反编译器

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1838074A (zh) * 2006-02-22 2006-09-27 北京金山软件有限公司 一种64位视窗操作系统下获取函数参数的方法及系统
CN101706734A (zh) * 2009-11-10 2010-05-12 中国科学院计算技术研究所 二进制翻译中间接跳转指令的翻译方法及其系统
CN101976187A (zh) * 2010-11-16 2011-02-16 广州迪庆电子科技有限公司 反编译过程中的堆栈跟踪方法、装置及反编译器

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
王勇: "基于编译原理技术的反汇编实现", 《中国优秀硕士学位论文全文数据库》, 15 December 2004 (2004-12-15) *
高佩珠: "通用的单片机反汇编程序实现方法", 《微型电脑应用》, 31 March 1997 (1997-03-31), pages 77 - 79 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103106096A (zh) * 2012-11-27 2013-05-15 武汉大学 一种针对嵌入式微处理器的反汇编方法
CN103885770A (zh) * 2014-01-21 2014-06-25 唐道成 单片机从可执行文件找回汇编文件的实现方法
CN109947432A (zh) * 2019-03-28 2019-06-28 Oppo广东移动通信有限公司 汇编程序处理方法及相关装置
CN110457046A (zh) * 2019-08-22 2019-11-15 广州小鹏汽车科技有限公司 混合指令集程序的反汇编方法、装置、存储介质及终端
CN110457046B (zh) * 2019-08-22 2023-05-12 广州小鹏汽车科技有限公司 混合指令集程序的反汇编方法、装置、存储介质及终端

Also Published As

Publication number Publication date
CN102591698B (zh) 2015-06-24

Similar Documents

Publication Publication Date Title
CN102473086B (zh) 提供分布式判定预测的方法、系统和计算机可访问介质
CN102360334B (zh) 一种动静态结合的软件安全性测试方法
CN102063286B (zh) 程序流控制
CN101976187B (zh) 反编译过程中的堆栈跟踪方法、装置及反编译器
US20130086424A1 (en) Debugging analysis in running multi-user systems
CN109976760A (zh) 一种图形语言的交叉编译方法及交叉编译器
WO2011159759A4 (en) Dynamically loading graph-based computations
CN103136107A (zh) 一种嵌入式程序动态分配内存的变量调试方法
CN103577241A (zh) 编译系统以及编译方法
CN102591698A (zh) 一种单片机反汇编的方法
US20110126179A1 (en) Method and System for Dynamic Patching Software Using Source Code
JPH11306026A (ja) コード最適化装置、コード最適化方法、及び、コード最適化プログラムを記録したコンピュータ読み取り可能な記録媒体
CN104407886A (zh) 一种引导与目标分离的嵌入式软件固化、加载方法
RU2015103934A (ru) Процессор компьютера и система без арифметико-логического блока
KR102013657B1 (ko) 연관된 다중 파일 정적 분석 장치
CN111813672B (zh) 一种针对多种处理器架构的非侵入式覆盖率统计方法
CN102455941B (zh) 一种基于范式的多任务调度方法、装置
CN101604255A (zh) 中间语言的延迟跳转指令二进制翻译实现的方法
CN102819543A (zh) 多文档批注的导出方法及装置
CN102520984A (zh) 目标软件在指定硬件环境中最差时间的计算方法
US20050149912A1 (en) Dynamic online optimizer
CN114995226B (zh) 一种针对航天嵌入式设备的流程控制系统及方法
WO2014142876A1 (en) Kernel functionality checker
CN107885504B (zh) 一种异构的多平台系统控制逻辑一致性校验的方法
US9710360B2 (en) Optimizing error parsing in an integrated development environment

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Disassembling method for single-chip microcomputer

Effective date of registration: 20170712

Granted publication date: 20150624

Pledgee: Fujian Zhangzhou rural commercial bank, Limited by Share Ltd

Pledgor: Fujian Erling Electronic Co., Ltd.

Registration number: 2017350000085

PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20200528

Granted publication date: 20150624

Pledgee: Fujian Zhangzhou rural commercial bank, Limited by Share Ltd.

Pledgor: FUJIAN ERLING ELECTRONICS Co.,Ltd.

Registration number: 2017350000085

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200707

Address after: 363000 Room 201, building 1, No. 23, Shengli East Road, Xiangcheng District, Zhangzhou City, Fujian Province

Patentee after: Zhangzhou Haiyin Intelligent Information Technology Co.,Ltd.

Address before: 363000 Fujian city of Zhangzhou Province Zhang Hua Road, No. 47

Patentee before: FUJIAN ERLING ELECTRONICS Co.,Ltd.