Recompiling with generic to specific replacement
First Claim
1. A method comprising:
- receiving a set of executable code;
instrumenting said executable code;
executing said executable code to collect data while said executable code executes;
decompiling said set of executable code;
determining variables in said executable code for replacement with constant values, wherein said determining comprises;
receiving a semantic definition of said executable code, said semantic definition being used to identify at least one occurrence of a first variable; and
said semantic definition being debugger symbols;
determining a first constant value for a first variable in said executable code, said first constant value being identified from said data; and
for each occurrence of said first variable, replacing said first variable with said first constant value to create a first modified set of executable code;
after determining and replacing variables for constant values, analyzing said first modified set of executable code to identify conditions that are satisfied when said first variable is defined as said first constant value;
for each of said conditions, removing said conditions from said first modified set of executable code by replacing the condition statements with a jump instruction; and
recompiling said first modified set of executable code to create a second set of executable code.
2 Assignments
0 Petitions
Accused Products
Abstract
Executable code may be recompiled so that generic portions of code may be replaced with specific portions of code. The recompilation may customize executable code for a specific use or configuration, making the code lightweight and executing faster. The replacement mechanism may replace variable names with fixed values, replace conditional branches with only those branches which are known to be executed, and may eliminate executable code portions that are not executed. The replacement mechanism may comprise identifying known values defined in the executable code for variables, and replacing those variables with the constant value. Once the constants are substituted, the code may be analyzed to identify branches that may be evaluated using the constant values. Those branches may be reformed using the constant value and the rest of the conditional code that may not be accessed may be removed.
247 Citations
9 Claims
-
1. A method comprising:
- receiving a set of executable code;
instrumenting said executable code;executing said executable code to collect data while said executable code executes; decompiling said set of executable code; determining variables in said executable code for replacement with constant values, wherein said determining comprises; receiving a semantic definition of said executable code, said semantic definition being used to identify at least one occurrence of a first variable; and
said semantic definition being debugger symbols;determining a first constant value for a first variable in said executable code, said first constant value being identified from said data; and for each occurrence of said first variable, replacing said first variable with said first constant value to create a first modified set of executable code; after determining and replacing variables for constant values, analyzing said first modified set of executable code to identify conditions that are satisfied when said first variable is defined as said first constant value; for each of said conditions, removing said conditions from said first modified set of executable code by replacing the condition statements with a jump instruction; and
recompiling said first modified set of executable code to create a second set of executable code. - View Dependent Claims (2, 3, 4, 5, 6)
- receiving a set of executable code;
-
7. A method comprising:
-
receiving a set of executable code; instrumenting said executable code; executing said executable code to collect data while said executable code executes; decompiling said set of executable code; determining variables in said executable code for replacement with constant values, wherein said determining comprises; identifying links from said application code to operating system code and incorporating said operating system code into said set of executable code; receiving a semantic definition of said executable code, said semantic definition being used to identify at least one occurrence of a first variable; and
said semantic definition being debugger symbols;determining a first constant value for a first variable in said executable code, said first constant value being identified from said data; and for each occurrence of said first variable, replacing said first variable with said first constant value to create a first modified set of executable code; after determining and replacing variables for constant values, analyzing said first modified set of executable code to identify conditions that are satisfied when said first variable is defined as said first constant value; for each of said conditions, removing said conditions from said first modified set of executable code by replacing the condition statements with a jump instruction; and recompiling said first modified set of executable code to create a second set of executable code. - View Dependent Claims (8, 9)
-
Specification