An optimizing object code translation system and method perform dynamic
compilation and translation of a target object code on a source operating
system while performing optimization. Compilation and optimization of the
target code is dynamically executed in real time. A compiler performs
analysis and optimizations that improve emulation relative to
template-based translation and interpretation such that a host processor
which processes larger order instructions, such as 32-bit instructions,
may emulate a target processor which processes smaller order instructions,
such as 16-bit and 8-bit instructions. The optimizing object code
translator does not require knowledge of a static program flow graph or
memory locations of target instructions prior to run time. In addition,
the optimizing object code translator does not require knowledge of the
location of all join points into the target object code prior to
execution. During program execution, a translator records branch
operations. The logging of information identifies instructions and
instruction join points. When a number of times a branch operation is
executed exceeds a threshold, the destination of the branch becomes a seed
for compilation and code portions between seeds are defined as segments. A
segment may be incomplete allowing for modification or replacement to
account for a new flow of program control during real time program
execution.
Een optimaliserende objecten code vertaalsysteem en een methode voeren dynamische compilatie en vertaling van een doelobjecten code inzake een bron werkend systeem uit terwijl het uitvoeren van optimalisering. De compilatie en de optimalisering van de doelcode worden dynamisch uitgevoerd in real time. Een compiler voert analyse en optimalisering uit die wedijver met betrekking tot op malplaatje-gebaseerde vertaling en interpretatie verbeteren dusdanig dat een gastheerbewerker die grotere ordeinstructies, zoals instructies verwerkt met 32 bits, een doelbewerker die kleinere ordeinstructies verwerkt, zoals instructies met 16 bits en met 8 bits kan nastreven. De optimaliserende objecten codevertaler vereist geen kennis van een statische grafiek of het geheugenplaatsen van de programmastroom van doelinstructies voorafgaand aan looppastijd. Bovendien vereist de optimaliserende objecten codevertaler niet de kennis van de plaats van allen zich bij punten in de doelobjecten code voorafgaand aan uitvoering aansluit. Tijdens programmauitvoering, registreert een vertaler takverrichtingen. Het registreren van informatie identificeert instructies en de instructie sluit zich aan bij punten. Wanneer een paar keer een takverrichting overschrijdt een drempel wordt uitgevoerd, wordt de bestemming van de tak een zaad voor compilatie en de codegedeelten tussen zaden worden gedefinieerd als segmenten. Een segment kan zijn het onvolledige toestaan voor wijziging of vervanging om van een nieuwe stroom rekenschap te geven van programmacontrole tijdens programmauitvoering in real time.