Determining destinations of a dynamic branch
AssigneeUnisys Corporation
InventorsG. Lawrence Krablin, Andrew T. Jennings, Timothy N. Fender, William Stratton
Life of this patent
Estimating the term…
Loading patent…
AssigneeUnisys Corporation
InventorsG. Lawrence Krablin, Andrew T. Jennings, Timothy N. Fender, William Stratton
Estimating the term…
A method, a translator, and a computer-readable medium for translating compiled programming code from a first code state to a second code state are disclosed. The programming code in the first state has a plurality of basic blocks, where each basic block has a set of instructions. At least one basic block ends in a dynamic branch, the dynamic branch being a transfer to one of a set of destinations based on a calculation of a destination address. The plurality of basic blocks in the first state of the programming code are identified, as are links between the identified basic blocks. A control flow graph (CFG) of the programming code is then constructed based on the identified basic blocks and identified links, where the CFG is in a preliminary form. At least one basic block ending in a dynamic branch is identified, and all identified basic blocks that lead to the dynamic branch are explored, based on the CFG, as far back as is necessary to fully determine a set of destination addresses for the dynamic branch. The set of destination addresses defines the set of destinations from the dynamic branch. Such set of destinations is examined to identify a branch table, and the CFG is updated to reflect the set of destinations and the identified branch table. The programming code is then translated from the first state to the second state based at least in part on the updated CFG.
A method of translating compiled programming code from a first code state to a second code state, the programming code in the first code state comprising a plurality of basic blocks, each basic block comprising a set of instructions, at least one basic block ending in a dynamic branch, the dynamic branch being a transfer to one of a set of destinations based on a calculation of a destination address, the method comprising the steps of:
A translator operating on a processor for translating compiled programming code from a first code state to a second code state, the programming code in the first code state comprising a plurality of basic blocks, each basic block comprising a set of instructions, at least one basic block ending in a dynamic branch, the dynamic branch being a transfer to one of a set of destinations based on a calculation of a destination address, the translator:
In connection with translating compiled programming code from a first code state to a second code state, the programming code in the first code state comprising a plurality of basic blocks, each basic block comprising a set of instructions, at least one basic block ending in a dynamic branch, the dynamic branch being a transfer to one of a set of destinations based on a calculation of a destination address, a computer-readable medium having computer-executable instructions for performing steps comprising:
Dependencies are inferred from the claim text.