IP Library Granted Patent US 6,907,519
Granted Patent B2
US 6,907,519 · App. 10/100,874 · Granted Jun 14, 2005

Systems and methods for integrating emulated and native code

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 6,907,519
App. No.
10/100,874
Granted
Jun 14, 2005
Kind
B2
Abstract

Systems and methods for integrating emulated and native code are provided. One embodiment comprises a method for emulating code from an original computer system on a host computer system. Briefly described, one such embodiment comprises the steps of: fetching a program instruction associated with program code to be emulated on a host computer system; determining whether the program instruction is to be executed natively on the host computer system or is to be emulated on the host computer system; and if the program instruction is to be executed natively on the host computer system, emitting a native code fragment associated with the program instruction into a dynamic execution layer interface to be executed.

Claims (35)

1. A method for emulating code from an original computer system on a host computer system, the method comprising the steps of:

fetching a program instruction associated with program code to be emulated on a host computer system;

determining whether the program instruction is to be executed natively on the host computer system or is to be emulated on the host computer system; and

if the program instruction is to be executed natively on the host computer system, emitting a native code fragment associated with the program instruction into a dynamic execution layer interface to be executed.

2. The method of claim 1 , wherein the step of fetching a program instruction comprises fetching a program instruction with an emulator.

3. The method of claim 2 , wherein the emulator is an interpreter/emulator.

4. The method of claim 1 , wherein the step of emitting a native code fragment occurs via an application program interface associated with the dynamic execution layer interface.

5. The method of claim 1 , wherein the step of determining whether the program instruction is to be executed natively on the host computer system comprises interfacing a first calling convention associated with an original computer system and a second calling convention associated with the host computer system.

6. The method of claim 1 , wherein the step of determining whether the program instruction is to be executed natively on the host computer system comprises detecting a sentinel instruction.

7. The method of claim 1 , further comprising the step of determining the native code fragment by receiving a data reference to a function that is to be run natively on the host computer system.

8. The method of claim 7 , further comprising the step of determining the native code fragment by receiving a location in memory where native code is located.

9. A system for emulating code from an original computer system on a host computer system, the system comprising:

means for fetching a program instruction associated with program code to be emulated on a host computer system;

means for determining whether the program instruction is to be executed natively on the host computer system or is to be emulated on the host computer system; and

means for emitting a native code fragment associated with the program instruction into a dynamic execution layer interface to be executed in the event that the program instruction is to be executed natively on the host computer system.

10. The system of claim 9 , wherein the means for fetching a program instruction comprises an emulator.

11. The system of claim 9 , wherein the means for emitting a native code fragment comprises an application program interface associated with the dynamic execution layer interface.

12. The system of claim 9 , wherein the means for determining comprises a programming method for interfacing a first calling convention associated with an original computer system and a second calling convention associated with the host computer system.

13. The system of claim 9 , further comprising means for receiving a data reference to a function that is to be run natively on the host computer system.

14. The system of claim 9 , wherein the means for determining a native code fragment comprises a location in memory where native code is located.

15. An emulation program configured to emulate an original computer system for which a program was written, the emulation program stored on a computer-readable medium and comprising:

logic configured to fetch a program instruction associated with program code to be emulated on a host computer system;

logic configured to determine whether the program instruction is to be executed natively on the host computer system or is to be emulated on the host computer system; and

logic configured to emit a native code fragment associated with the program instruction into a dynamic execution layer interface to be executed in the event the program instruction is to be executed natively on the host computer system.

16. The emulation program of claim 15 , wherein the emitting logic is further configure to emit the native code fragment via an application program interface associated with the dynamic execution layer interface.

17. The emulation program of claim 15 , wherein the determining logic is further configured to provide an interface between a first calling convention associated with an original computer system and a second calling convention associated with the host computer system.

18. The emulation program of claim 15 , wherein the determining logic is further configured to detect a sentinel instruction.

19. The emulation program of claim 15 , wherein the determining logic is further configured to receive a data reference a location in memory where native code is located.

20. A system for emulating code from an original computer system on a host computer system, the system comprising:

an emulator configured to fetch instructions associated with a program written to be executed on an original computer system, the emulator comprising an emulation module configured to execute instructions by emulating the original computer system and a native code interceptor module configured to detect instructions that are to be executed natively instead of emulated;

a dynamic execution layer interface including a core having at least one code cache in which code fragments can be cached and executed; and

an application programming interface that links the emulator to the dynamic execution layer interface.

21. The system of claim 20 , wherein the emulator comprises an interpreter/emulator.

22. The system of claim 21 , wherein the emulator further comprises a just-in-time compiler.

23. The system of claim 20 , wherein the application programming interface comprises a set of functions available to the emulator including an emit fragment function with which the emulator can emit code fragments into the at least one code cache and an execute function with which the emulator can request execution of code fragments contained within the at least one code cache.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 12, 2022
From: OT PATENT ESCROW, LLC
To: VALTRUS INNOVATIONS LIMITED
Reel/Frame 060005/0600 →
PATENT ASSIGNMENT, SECURITY INTEREST, AND LIEN AGREEMENT Recorded Jan 26, 2021
From: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP; HEWLETT PACKARD ENTERPRISE COMPANY
To: OT PATENT ESCROW, LLC
Reel/Frame 055269/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 9, 2015
From: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 037079/0001 →