Memory safety of floating-point computations
First Claim
1. A computer-implemented method for determining memory safety of floating point instructions, the computer-implemented method comprising performing computer-implemented operations for:
- receiving a portion of code at an evaluation engine, the code comprising computer executable instructions corresponding to an application;
analyzing, by a computing device, the portion of the code to determine if the portion of the code comprises a floating-point instruction; and
in response to determining that the portion of the code comprises the floating-point instruction,generating, by the computing device, a set of memory addresses and registers written during execution of the floating-point instruction,symbolically executing, by the computing device, the portion of the code,assigning, by the computing device, a symbolic value into the set for each memory address and register in the set, anddetermining, by the computing device, if the symbolic value is used to calculate any memory address during the symbolic execution.
2 Assignments
0 Petitions
Accused Products
Abstract
Concepts and technologies are described herein for determining memory safety of floating-point computations. The concepts and technologies described herein analyze code to determine if any floating-point computations exist in the code, and if so, if the floating-point computations are memory safe. The analysis can include identifying floating-point instructions and conditional statements in the code. The code can be symbolically executed, and behavior of the floating-point instructions and the conditional statements can be monitored to determine if a floating point calculation is ever involved in computation of any memory address during the execution of the code.
35 Citations
20 Claims
-
1. A computer-implemented method for determining memory safety of floating point instructions, the computer-implemented method comprising performing computer-implemented operations for:
-
receiving a portion of code at an evaluation engine, the code comprising computer executable instructions corresponding to an application; analyzing, by a computing device, the portion of the code to determine if the portion of the code comprises a floating-point instruction; and in response to determining that the portion of the code comprises the floating-point instruction, generating, by the computing device, a set of memory addresses and registers written during execution of the floating-point instruction, symbolically executing, by the computing device, the portion of the code, assigning, by the computing device, a symbolic value into the set for each memory address and register in the set, and determining, by the computing device, if the symbolic value is used to calculate any memory address during the symbolic execution. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A computer-implemented method for determining memory safety of floating point instructions, the computer-implemented method comprising performing computer-implemented operations for:
-
receiving code at an evaluation engine, the code comprising computer executable instructions corresponding to an application; parsing, by a computing device, the code to extract a portion of the code to evaluate for memory safety of floating-point instructions in the portion of the code; analyzing, by the computing device, the portion of the code to determine if the portion of the code comprises a floating-point instruction; and in response to determining that the portion of the code comprises the floating-point instruction, generating, by the computing device, a set of memory addresses and registers written during execution of the floating-point instruction, symbolically executing, by the computing device, the portion of the code, assigning, by the computing device, a symbolic value into the set for each memory address and register in the set, and determining, by the computing device, if the symbolic value is used to calculate any memory address during the symbolic execution. - View Dependent Claims (12, 13, 14, 15, 16, 17)
-
-
18. A computer-readable storage medium having computer readable instructions stored thereupon that, when executed by a computer, cause the computer to:
-
receive code at an evaluation engine, the code comprising computer executable instructions corresponding to an application; parse the code to extract a portion of the code to evaluate for memory safety of floating-point instructions in the portion of the code; analyze the portion of the code to determine if the portion of the code comprises a floating-point instruction; and in response to determining that the portion of the code comprises the floating-point instruction, generate a set of memory addresses and registers written during execution of the floating-point instruction, symbolically execute the portion of the code, assign a symbolic value to each memory address and register in the set, and determine if the symbolic value is used to calculate any memory address during the symbolic execution. - View Dependent Claims (19, 20)
-
Specification