Claims Analysis
Total Claims: 5
Claim 1
Independent Claim
356 words
A method of operating a digital computer for partially translating an original computer program to provide a translated program, and executing said translated program with an interpreter to interpret untranslated portions of said original computer program, said original computer program including program instructions at respective program addresses in said original computer program, the program addresses of some of said program instructions being unknown when translating said original computer program because said program instructions include execution transfer instructions specifying transfers of program execution to respective computed destination addresses that are not determined until program execution, said method comprising the steps of: (a) automatically generating a flowgraph of instructions in said original program, said flowgraph including blocks of said instructions and execution paths between said blocks, some of said blocks including some of said execution transfer instructions having said computed destination addresses that are not determined until program execution, said flowgraph excluding said program instructions having program addresses that are unknown when translating said original program; and then (b) using said flowgraph to analyze said original computer program to provide information about the blocks of instructions in said flowgraph; and then (c) using said flowgraph and said information about the blocks of instructions in said flowgraph to generate for said translated program a block of translated instructions for each of said blocks of instructions in said flowgraph; and when said each of said blocks of instructions in said flowgraph has one of said execution transfer instructions having a computed destination address having a value that is not determined prior to execution of said translated program, including in said block of translated instructions an execution transfer instruction for transferring execution to said interpreter; and then (d) executing said translated program, and when execution is transferred to said interpreter by said execution transfer instruction to said interpreter, executing said interpreter to interpret instructions in said original program; and (e) when interpretation by said interpreter reaches a first instruction in one of said blocks of instructions in said flowgraph, then returning execution to a first instruction in the block of translated instructions for said one of said blocks in said flowgraph.
Claim 2
Independent Claim
356 words
A method of operating a digital computer for partially translating an original computer program to provide a translated program, and executing said translated program with an interpreter to interpret untranslated portions of said original computer program, said original computer program including program instructions at respective program addresses in said original computer program, the program addresses of some of said program instructions being unknown when translating said original computer program because said program instructions include execution transfer instructions specifying transfers of program execution to respective computed destination addresses that are not determined until program execution, said method comprising the steps of: (a) automatically generating a flowgraph of instructions in said original program, said flowgraph including blocks of said instructions and execution paths between said blocks, some of said blocks including some of said execution transfer instructions having said computed destination addresses that are not determined until program execution, said flowgraph excluding said program instructions having program addresses that are unknown when translating said original program; and then (b) using said flowgraph to analyze said original computer program to provide information about the blocks of instructions in said flowgraph; and then (c) using said flowgraph and said information about the blocks of instructions in said flowgraph to generate for said translated program a block of translated instructions for each of said blocks of instructions in said flowgraph; and when said each of said blocks of instructions in said flowgraph has one of said execution transfer instructions having a computed destination address having a value that is not determined prior to execution of said translated program, including in said block of translated instructions an execution transfer instruction for transferring execution to said interpreter; and then (d) executing said translated program, and when execution is transferred to said interpreter by said execution transfer instruction to said interpreter, executing said interpreter to interpret instructions in said original program; and (e) when interpretation by said interpreter reaches a first instruction in one of said blocks of instructions in said flowgraph, then returning execution to a first instruction in the block of translated instructions for said one of said blocks in said flowgraph.
Claim 3
Dependent Claim
69 words
The method as claimed in claim 1, wherein step (e) includes accessing a conversion table to determine when interpretation by said interpreter reaches said first instruction in one of said blocks of instructions in said flowgraph, said conversion table including program addresses of said original program that are program address of first instructions of said blocks of instructions in said flowgraph, and corresponding entry points in said translated program.
Claim 4
Independent Claim
429 words
A method of operating a digital computer for partially translating an original computer program to provide a translated program, and executing said translated program with an interpreter to interpret untranslated portions of said original computer program, said original computer program including program instructions at respective program addresses in said original computer program, the program addresses of some of said program instructions being unknown when translating said original computer program because said program instructions include execution transfer instructions specifying transfers of program execution to respective computed destination addresses that are not determined until program execution, said method comprising the steps of: (a) automatically generating a flowgraph of instructions in said original program, said flowgraph including blocks of said instructions and execution paths between said blocks, some of said blocks including some of said execution transfer instructions having said computed destination addresses that are not determined until program execution, said flowgraph excluding said program instructions having program addresses that are unknown when translating said original program; and then (b) using said flowgraph to analyze said original computer program to provide information about the blocks of instructions in said flowgraph; and then (c) using said flowgraph and said information about the blocks of instructions in said flowgraph to generate for said translated program a block of translated instructions for each of said blocks of instructions in said flowgraph; and when said each of said blocks of instructions in said flowgraph has one of said execution transfer instructions having a computed destination address having a value that is not determined prior to execution of said translated program, including in said block of translated instructions an execution transfer instruction for transferring execution to said interpreter; and then (d) executing said translated program, and when execution is transferred to said interpreter by said execution transfer instruction to said interpreter, executing said interpreter to interpret instructions in said original program; and (e) when interpretation by said interpreter reaches an instruction in said original program, accessing a conversion table for performing a look-up for the original program address of the instruction reached in the original program, said conversion table including program addresses of said original program that are program address of first instructions of said blocks of instructions in said flowgraph, and corresponding entry points in said translated program; and (f) when said accessing of said conversion table finds in said conversion table the original program address of said instruction reached by said interpreter, transferring execution to said translated program at the corresponding entry point of said translated program corresponding to said instruction reached by said interpreter.
Claim 5
Independent Claim
429 words
A method of operating a digital computer for partially translating an original computer program to provide a translated program, and executing said translated program with an interpreter to interpret untranslated portions of said original computer program, said original computer program including program instructions at respective program addresses in said original computer program, the program addresses of some of said program instructions being unknown when translating said original computer program because said program instructions include execution transfer instructions specifying transfers of program execution to respective computed destination addresses that are not determined until program execution, said method comprising the steps of: (a) automatically generating a flowgraph of instructions in said original program, said flowgraph including blocks of said instructions and execution paths between said blocks, some of said blocks including some of said execution transfer instructions having said computed destination addresses that are not determined until program execution, said flowgraph excluding said program instructions having program addresses that are unknown when translating said original program; and then (b) using said flowgraph to analyze said original computer program to provide information about the blocks of instructions in said flowgraph; and then (c) using said flowgraph and said information about the blocks of instructions in said flowgraph to generate for said translated program a block of translated instructions for each of said blocks of instructions in said flowgraph; and when said each of said blocks of instructions in said flowgraph has one of said execution transfer instructions having a computed destination address having a value that is not determined prior to execution of said translated program, including in said block of translated instructions an execution transfer instruction for transferring execution to said interpreter; and then (d) executing said translated program, and when execution is transferred to said interpreter by said execution transfer instruction to said interpreter, executing said interpreter to interpret instructions in said original program; and (e) when interpretation by said interpreter reaches an instruction in said original program, accessing a conversion table for performing a look-up for the original program address of the instruction reached in the original program, said conversion table including program addresses of said original program that are program address of first instructions of said blocks of instructions in said flowgraph, and corresponding entry points in said translated program; and (f) when said accessing of said conversion table finds in said conversion table the original program address of said instruction reached by said interpreter, transferring execution to said translated program at the corresponding entry point of said translated program corresponding to said instruction reached by said interpreter.