IP Library Granted Patent US 9,626,170
Granted Patent B2
US 9,626,170 · App. 14/899,231 · Granted Apr 18, 2017

Method and computer program product for disassembling a mixed machine code

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,626,170
App. No.
14/899,231
Granted
Apr 18, 2017
Kind
B2
Abstract

A method and a computer program product for disassembling a mixed machine code are described. The machine code is provided as a sequence of code items including one or more instructions and one or more data items. The method comprises: storing the sequence of code items in accordance with a corresponding sequence of addresses; executing the machine code, thereby generating an execution trace; and partitioning the sequence of addresses into instruction address blocks and data address blocks on the basis of control data, the control data comprising at least the execution trace.

Claims (45)

1. A method for disassembling a mixed machine code, wherein the machine code is provided as a sequence of code items, the sequence of code items comprises one or more instructions and one or more data items; and the method comprises:

storing the sequence of code items in accordance with a corresponding sequence of addresses;

executing the machine code, thereby generating an execution trace; and

partitioning the sequence of addresses into instruction address blocks and data address blocks on the basis of control data, the control data comprising at least the execution trace.

2. The method of claim 1 , further comprising:

translating each instruction address block of the address sequence into assembly language.

3. The method of claim 2 , further comprising:

displaying one or more of the translated instruction address blocks on a screen or printing one or more of the translated instruction address blocks on a print medium.

4. The method of claim 1 , further comprising:

generating an instruction address sequence by removing any data address blocks from the address sequence.

5. The method of claim 4 , further comprising:

verifying, for each or at least one of said instructions, whether it is fully contained in one of the instruction address blocks; and

if the respective instruction is not fully contained in one of the instruction address blocks, correcting the instruction address sequence.

6. The method of claim 1 , wherein the execution trace comprises a sequence of accessed instruction addresses, and a sequence of accessed data addresses.

7. The method of claim 1 , wherein the control data further includes debug information.

8. The method of claim 7 , further comprising:

compiling a source code, thereby generating the machine code along with the debug information.

9. The method of claim 7 , wherein the debug information is in the DWARF format.

10. The method of claim 7 , wherein the debug information comprises one or more of the following:

one or more instruction symbols, each instruction symbol specifying an instruction address block;

one or more data symbols, each data symbol specifying a data address block;

one or more instruction labels, each instruction label specifying an instruction address; and

one or more data labels, each data label specifying a data address.

11. The method of claim 1 , where the control data further comprises one or more target addresses and the method further comprises:

determining the one or more target addresses on the basis of the machine code, debug information, and the execution trace.

12. The method of claim 1 , comprising:

performing said partitioning of the address sequence in a sequence of iterations.

13. The method of claim 12 , wherein at least one of said iterations different from the first iteration comprises:

updating the execution trace, or updating the debug information;

partitioning each instruction address block from the preceding iteration into one or more new instruction address blocks and none, one, or more new data address blocks; and

partitioning each data address block from the preceding iteration into one or more new data address blocks and none, one, or more new instruction address blocks.

14. The method of claim 1 , further comprising instructions for instructing a computer to carry out the method.

15. A computer program product for disassembling a mixed machine code, wherein the machine code is provided as a sequence of code items, the sequence of code items comprising one or more instructions and one or more data items, the computer program product comprising:

a memory unit for storing the sequence of code items in accordance with a corresponding sequence of addresses, the sequence of addresses partitioned into instruction address blocks and data address blocks on the basis of control data; and

a processor for executing the machine code to generate the control data comprising at least an execution trace.

16. The computer program product of claim 1 , wherein the execution trace comprises a sequence of accessed instruction addresses, and a sequence of accessed data addresses.

17. The computer program product of claim 1 , wherein the control data further includes debug information.

18. The computer program product of claim 17 , further comprising:

compiling a source code, thereby generating the machine code along with the debug information.

19. The computer program product of claim 17 , wherein the debug information is in the DWARF format.

20. The method of claim 17 , wherein the debug information comprises one or more of the following:

one or more instruction symbols, each instruction symbol specifying an instruction address block;

one or more data symbols, each data symbol specifying a data address block;

one or more instruction labels, each instruction label specifying an instruction address; and

one or more data labels, each data label specifying a data address.

Assignments (7)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040626 FRAME: 0683. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME EFFECTIVE NOVEMBER 7, 2016. Recorded Jan 12, 2017
From: NXP SEMICONDUCTORS USA, INC. (MERGED INTO); FREESCALE SEMICONDUCTOR, INC. (UNDER)
To: NXP USA, INC.
Reel/Frame 041414/0883 →
CHANGE OF NAME Recorded Nov 16, 2016
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 040626/0683 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 17, 2015
From: VICOVAN, IONUT-VALENTIN; IONESCU, RAZVAN; IVAN, RADU-MARIAN; NISTOR, MIHAIL
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037315/0668 →