IP Library Granted Patent US 8,869,120
Granted Patent B2
US 8,869,120 · App. 12/743,695 · Granted Oct 21, 2014

Multi language software code analysis

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 8,869,120
App. No.
12/743,695
Granted
Oct 21, 2014
Kind
B2
Abstract

The invention concerns a method, a computer, and software for analysis of software code that includes code written in multiple languages. A static analysis on source code of an embedded system that has source code written in a low-level language embedded within a high level language is accompanied by transforming the embedded low level language source code to a common high level representation for performing the static analysis. This transformation only retains sufficient semantic meaning of the low level source code necessary to perform the static analysis.

Claims (35)

1. A method executed by a processor for performing static analysis on source code having a low level language source code embedded in a high level language source code, wherein the high level language source code is represented in a high level representation that the static analysis can be performed on, the method comprising the steps of:

transforming the embedded low level language source code to a high level representation that does not retain the full semantics of the low level language source code and that the static analysis can be performed on, by identifying a set of instructions in the low level language source code that represents a single high level statement in the high level representation, and transforming the set of instructions to represent the single high level statement in the high level representation; and

performing static analysis on the high level representation of the high level language source code and the high level representation of the low level source code.

2. The method of claim 1 , wherein transforming comprises transforming one or more instructions in the low level language source code that have no equivalent in the high level representation in a way that does not retain all the semantics of those one or more instructions.

3. The method according to claim 2 , wherein instructions that have no equivalent in the high level representation are instructions that provide direct access to the hardware that includes any one or more of:

read or modify the stack pointer (sp);

modify the program counter (pc);

read or modify special (co-)processor registers;

set new page table;

flush cache;

enable or disable cache; or

enable or disable interrupts.

4. The method according to claim 1 , wherein the step of transforming the embedded low level language source code to the high level representation comprises the steps of:

identifying one or more instructions in the low level language source code that have no equivalent in the high level representation; and

transforming the one or more instructions to the high level representation in a way that represents only effects these instructions have on the source code.

5. The method according to claim 1 , wherein the step of transforming the embedded low level language source code to the high level representation comprises the steps of:

identifying any variables and registers used in the low level language source code; and

declaring the identified variables and/or registers in the high level representation.

6. The method according to claim 1 , wherein the method further comprises the step of:

transforming the high level language source code to the high level representation that the static analysis can be performed on.

7. The method according to claim 1 , wherein the high level representation is an abstract syntax tree.

8. The method according to claim 1 , wherein the type of high level source code is the same as the high level representation.

9. The method according to claim 1 , wherein the step of performing static analysis of the high level representation comprises one or more of the following:

identify errors in the source code;

determine worst case execution time of the source code;

determine security risks of the source code;

determine correct implementation of access policies in the source code;

determine memory consumption of a device performing the instructions of the source code;

determine the battery consumption of a device performing the instructions of the source code; and

determine information describing the nature of the source code, such as statistics and structure.

10. The method according to claim 1 , wherein the source code forms part of an embedded system.

11. The method according to claim 1 , wherein the embedded low level language source code is architecture and hardware specific.

12. The method according to claim 1 , further comprising the step of installing the source code in an embedded system.

13. Software, that is computer executable instructions stored on a non-transitory computer readable medium that when installed on a computer, causes the computer to operate in accordance with the method of claim 1 or claim 9 .

14. A computer system having software installed in a memory, to cause a processor of the computer system to perform the method of claim 1 .

Assignments (6)
SECURITY INTEREST Recorded Sep 30, 2024
From: BLACK DUCK SOFTWARE, INC.
To: ARES CAPITAL CORPORATION, AS COLLATERAL AGENT
Reel/Frame 069083/0149 →
CHANGE OF NAME Recorded Jul 30, 2024
From: SOFTWARE INTEGRITY GROUP, INC.
To: BLACK DUCK SOFTWARE, INC.
Reel/Frame 068191/0490 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2024
From: SYNOPSYS, INC.
To: SOFTWARE INTEGRITY GROUP, INC.
Reel/Frame 066664/0821 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 2, 2016
From: NICTA IPR PTY LTD
To: GECKO HOLDINGS PTY LTD
Reel/Frame 038786/0382 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 2, 2016
From: GECKO HOLDINGS PTY LTD
To: SYNOPSYS, INC.
Reel/Frame 038786/0575 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 22, 2010
From: HUUCK, RALF; RAUCH, FELIX; BLACKHAM, BERNARD; SEEFRIED, SEAN
To: NATIONAL ICT AUSTRALIA LIMITED
Reel/Frame 025181/0112 →