IP Library › Granted Patent US 10,248,545
Granted Patent B2
US 10,248,545 · App. 15/392,563 · Granted Apr 2, 2019

Method for tracking high-level source attribution of generated assembly language code

Inventors: Daniel J. Dominguez (Azusa, CA); Joshua William Scoggins (Azusa, CA); Richard Kent Newman (North Hollywood, CA); Uwe Samitsch Kronholm (Fullerton, CA)
Assignee: PARASOFT CORPORATION
G06F11/3672G06F8/41G06F8/447G06F11/3684
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 10,248,545
App. No.
15/392,563
Granted
Apr 2, 2019
Kind
B2
Abstract

A method for tracking high-level source attribution of a generated assembly language code includes: receiving commands for compiling or linking a high-level language code; analyzing the received commands to determine whether a command is a compiler command for compiling the high-level language code or a link command for linking the low level object code; when the command is a compiler command: generating assembly language code by compiling the high-level language code, parsing the generated assembly language code to generate an internal representation for the assembly language code, storing the internal representation in a computer memory; and generating associated linker input artifacts for linking; when the command is a link command: updating the internal representation with the associated linker input artifacts; and generating a report file from the updated internal representation.

Claims (47)

1. A computer implemented method for tracking high-level source attribution of a generated assembly language code, the method comprising:

receiving commands for compiling or linking a high-level language code;

analyzing the received commands to determine whether a command is a compiler command for compiling the high-level language code or a link command for linking the low level object code;

when the command is a compiler command:

generating assembly language code by compiling the high-level language code,

parsing the generated assembly language code to generate an internal representation for the assembly language code,

storing the internal representation in a computer memory; and

generating associated linker input artifacts for linking;

when the command is a link command:

updating the internal representation with the associated linker input artifacts;

generating a report file from the updated internal representation instrumenting the updated internal representation for coverage metrics;

generating instrumented low level assembly language source code from the instrumented internal representation;

assembling the instrumented low level assembly language source code to produce object code, linking the object modules in the object codes to produce an executable binary image file;

executing the executable binary image file to extract dynamic coverage information; and

merging the dynamic coverage information and the updated internal representation to produce test coverage reports.

2. The method of claim 1 , wherein the internal representation for the assembly language code is generated by assigning generic tokens to categorize each kind of low-level assembly construct in order to abstract away machine specific details.

3. The method of claim 1 , wherein the unresolved and missing metadata is resolved by matching missing information to template declarations, preprocessor function-like macros, and inline functions using pattern matching.

4. The method of claim 1 , further comprising generating test coverage metrics from the updated internal representation.

5. The method of claim 4 , further comprising using the test coverage to verify correctness of a compiler comping the high-level language code.

6. The method of claim 1 , wherein the report file includes line by line listing of attribution in the assembly language source code of a corresponding high-level source code constructs.

7. The method of claim 1 , wherein the report file includes an aggregate of all compilations associated with final and resolved links.

8. The method of claim 1 , wherein the report file includes the high-level language code mixed with low-level assembly language code that includes information as to where and for which data types a template was instantiated and an original location of code defined in macros and inline definitions, and their low-level assembly language code representations.

9. The method of claim 1 , further comprising using the report file to prove compliance with low-level assembly language code coverage requirements.

10. The method of claim 1 , further comprising using the report file to confirm and prove that the compiled high-level language code is correct low-level assembly language code.

11. A non-transitory compute readable storage medium for storing a computer program for tracking high-level source attribution of a generated assembly language code, the computer program when executed by a computer preforming a process comprising:

receiving commands for compiling or linking a high-level language code;

analyzing the received commands to determine whether a command is a compiler command for compiling the high-level language code or a link command for linking the low level object code;

when the command is a compiler command:

generating assembly language code by compiling the high-level language code,

parsing the generated assembly language code to generate an internal representation for the assembly language code,

storing the internal representation in a computer memory; and

generating associated linker input artifacts for linking the internal representation;

when the command is a link command:

updating the internal representation with the associated linker input artifacts;

generating a report file from the updated internal representation;

instrumenting the updated internal representation for coverage metrics;

generating instrumented low level assembly language source code from the instrumented internal representation;

assembling the instrumented low level assembly language source code to produce object code, linking the object modules in the object codes to produce an executable binary image file;

executing the executable binary image file to extract dynamic coverage information; and

merging the dynamic coverage information and the updated internal representation to produce test coverage reports.

12. The non-transitory compute readable storage medium of claim 11 , wherein the internal representation for the assembly language code is generated by assigning generic tokens to categorize each kind of low-level assembly construct in order to abstract away machine specific details.

13. The non-transitory compute readable storage medium of claim 11 , wherein the unresolved and missing metadata is resolved by matching missing information to template declarations, preprocessor function-like macros, and inline functions using pattern matching.

14. The non-transitory compute readable storage medium of claim 11 , further comprising computer program for generating test coverage metrics from the updated internal representation.

15. The non-transitory compute readable storage medium of claim 14 , further comprising computer program for using the test coverage to verify correctness of a compiler comping the high-level language code.

16. The non-transitory compute readable storage medium of claim 11 , wherein the report file includes line by line listing of attribution in the assembly language source code of a corresponding high-level source code constructs.

17. The non-transitory compute readable storage medium of claim 11 , wherein the report file includes an aggregate of all compilations associated with final and resolved links.

18. The non-transitory compute readable storage medium of claim 11 , wherein the report file includes the high-level language code mixed with low-level assembly language code that includes information as to where and for which data types a template was instantiated and an original location of code defined in macros and inline definitions, and their low-level assembly language code representations.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 3, 2017
From: DOMINGUEZ, DANIEL J.; SCOGGINS, JOSHUA WILLIAM; NEWMAN, RICHARD KENT; KRONHOLM, UWE SAMITSCH
To: PARASOFT CORPORATION
Reel/Frame 040831/0801 →
Continuity (2)
Provisional Application 62296525 · Feb 17, 2016
Related Publication 20170235670A1 · Aug 17, 2017
Cited By (2)
US 12,321,423 US 12,619,819