High-frequency surgical apparatus |
| We claim: 1. High-frequency electrical surgical apparatus for use with manipulable electrodes ... |
|
Apparatus and method for cryopreparing corneal tissue for surgical procedures |
| What is claimed is: 1. A method for cryopreparing corneal tissue for use in surgical procedures ... |
|
Dynamic shading compensation for IR tracking system |
| OF THE INVENTION A conventional IR tracking system is commonly known as a FLIR system. This type ... |
|
Method and apparatus for scrambling a television signal |
| The present invention relates to a television signal scrambling method and apparatus which employ a ... |
|
Laser spot projector |
| It is therefore an object of the present invention to provide a laser spot projector capable of ... |
|
Pulsatile drug delivery device using stimuli sensitive hydrogel |
| It is an object of the present invention to provide a delivery system which enables the effective ... |
|
Method for making late programmable read-only memory devices |
| It is, therefore, an object of this invention to provide a method of programming a ROM late in its ... |
|
Method of fabricating trench cell capacitors on a semocondcutor substrate |
| It is hence a primary object of this invention to present a method of fabricating a trench cell ... |
|
Mouth held switch assembly |
| This invention is concerned with a mouth held electrical switch assembly and more particularly with ... |
|
|
Mechanism for cross validating emulated states between different emulation technologies in a dynamic compiler
| Details |
Inventors: Patel, Amit;
Assignee: Hewlett-Packard Company (Palo Alto, CA)
Primary Examiner: Teska; Kevin J.
Assistant Examiner: Thomson; W. D.
Attorney, Agent or Firm:
The inventive mechanism compares system states resulting from emulation of the same block of source code by different emulation technologies within a dynamic compiler. A set of initial conditions, parameters of the system state S1, preceding any emulation is stored for later use. Then, the block of source code is emulated by an interpreter generating a system state S2, the parameters of which are contained partly in the system registers and partly in memory locations accessed by the interpreter. The status of the memory locations representing system state S2 are stored in a Write History Stack, while the register values representing system state S2 are saved to a reserved portion of memory. Next, the initial conditions, represented by the parameters of the system state S1, are restored to the appropriate registers and memory location values affected by the interpreter. Then, the same block of code is emulated employing dynamic translation leading to a third system state S3. The parameters of system states S2 and S3 are then compared. If the system states match completely, the mechanism concludes that both emulators operated correctly. If there is a mismatch in any parameter between the two system states, the mechanism concludes that one of the two emulators has a bug. The mechanism then re-emulates the block of code, logging all write operations to registers and memory locations, thereby producing a printed log of emulator activity suitable for analysis by a programmer. The source of the problem can then be readily and rapidly identified by the programmer. The mechanism avoids the time consuming and expensive task of enabling data logging during all emulation activity, by logging data manipulation only for blocks of code which were emulated incorrectly by one of the emulation technologies. |
|
DETAILED DESCRIPTION FIG. 1 depicts a cross validation procedure 100 between system states arrived at by two different emulation technologies. Cross validation is a three stage process involving, emulation of a block of code by an interpreter 130, emulation of the same block of code via a translator 140, and comparison of the results obtained by these two emulation mechanisms 150. The program starts at step 120. Before the block of code is executed by any mechanism, the system has an initial state, S1121, as represented by the values of the system registers and by all the memory locations which will be accessed during operation of the emulators on the block of code concerned. At S1121, while the identities of the registers is known, the mechanism does not yet know which memory locations will be affected by emulation of the block of code. The Write History Stack keeps track of the memory portion of the system state, the other portion being preserved by the registers. In the preferred embodiment, each Write History Stack entry contains three fields: the first representing the memory location accessed, the second representing the value in that memory location prior to any particular write operation, and the third representing the value in the same memory location at system state S2. The second field of the first entry in the Write History Stack pertaining to a particular memory location will contain the value of that memory location at system state S1. Second field values for subsequent entries pertaining to the same memory location will contain intermediate values which represent neither the S1 or S2 system state conditions. The last of the three fields is ascertained only upon completion of emulation by the interpreter, while the first two fields are determined during emulation. For example, if memory location 16 were to be accessed by the interpreter, and had an initial value of 0, this could be determined only once the mechanism determines that the interpreter has accessed memory location 16
|
|