TW200516497A - Method and apparatus for partitioning code in program code conversion - Google Patents

Method and apparatus for partitioning code in program code conversion

Info

Publication number
TW200516497A
TW200516497A TW093120868A TW93120868A TW200516497A TW 200516497 A TW200516497 A TW 200516497A TW 093120868 A TW093120868 A TW 093120868A TW 93120868 A TW93120868 A TW 93120868A TW 200516497 A TW200516497 A TW 200516497A
Authority
TW
Taiwan
Prior art keywords
code
subject
partitioning technique
self
partitions
Prior art date
Application number
TW093120868A
Other languages
Chinese (zh)
Other versions
TWI362614B (en
Inventor
Alex Brown
Paul Knowles
Geraint North
Original Assignee
Transitive Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Transitive Ltd filed Critical Transitive Ltd
Publication of TW200516497A publication Critical patent/TW200516497A/en
Application granted granted Critical
Publication of TWI362614B publication Critical patent/TWI362614B/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3812Instruction prefetching with instruction modification, e.g. store into instruction stream

Abstract

A partitioning technique utilized by a translator to divide the subject code space into regions, referred to hereafter as partitions, where each partition contains a distinct set of basic blocks of subject code and corresponding target code. The partitioning technique divides the translator's representation of subject code and subject code translations into non-overlapping regions of subject memory. In this manner, when the subject program modifies subject code, only those partitions actually affected by the self-modifying code need be discarded and all translations in unaffected partitions can be kept. This partitioning technique is advantageous in limiting the amount of target code that must be retranslated in response to self-modifying code operation. In another process, the partitioning technique allows multithreaded subject programs that also involve self-modifying code to perform code modification in a thread-safe manner.
TW093120868A 2003-07-15 2004-07-13 Method, apparatus and computer program product for generating a translation of subject code into target code TWI362614B (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GBGB0316532.1A GB0316532D0 (en) 2003-07-15 2003-07-15 Method and apparatus for partitioning code in program code conversion
GB0328121A GB2404044B (en) 2003-07-15 2003-12-04 Method and apparatus for partitioning code in program code conversion

Publications (2)

Publication Number Publication Date
TW200516497A true TW200516497A (en) 2005-05-16
TWI362614B TWI362614B (en) 2012-04-21

Family

ID=27763853

Family Applications (2)

Application Number Title Priority Date Filing Date
TW093120866A TWI365406B (en) 2003-07-15 2004-07-13 Shared code caching method and apparatus for program code conversion
TW093120868A TWI362614B (en) 2003-07-15 2004-07-13 Method, apparatus and computer program product for generating a translation of subject code into target code

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW093120866A TWI365406B (en) 2003-07-15 2004-07-13 Shared code caching method and apparatus for program code conversion

Country Status (5)

Country Link
CN (2) CN100362475C (en)
GB (3) GB0316532D0 (en)
HK (2) HK1068698A1 (en)
IL (1) IL172830A0 (en)
TW (2) TWI365406B (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI447649B (en) * 2006-10-02 2014-08-01 Ibm Method and apparatus for administering a process filesystem with respect to program code conversion
TWI571802B (en) * 2014-11-25 2017-02-21 財團法人資訊工業策進會 Variable inference system and method for software program

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070294675A1 (en) * 2006-06-20 2007-12-20 Transitive Limited Method and apparatus for handling exceptions during binding to native code
US9015727B2 (en) 2008-04-02 2015-04-21 Qualcomm Incorporated Sharing operating system sub-processes across tasks
CN101458630B (en) * 2008-12-30 2011-07-27 中国科学院软件研究所 Self-modifying code identification method based on hardware emulator
US8069339B2 (en) * 2009-05-20 2011-11-29 Via Technologies, Inc. Microprocessor with microinstruction-specifiable non-architectural condition code flag register
US8578357B2 (en) * 2009-12-21 2013-11-05 Intel Corporation Endian conversion tool
US8479176B2 (en) * 2010-06-14 2013-07-02 Intel Corporation Register mapping techniques for efficient dynamic binary translation
CN102043659A (en) * 2010-12-08 2011-05-04 上海交通大学 Compiling device for eliminating memory access conflict and implementation method thereof
US10146545B2 (en) * 2012-03-13 2018-12-04 Nvidia Corporation Translation address cache for a microprocessor
US9880846B2 (en) 2012-04-11 2018-01-30 Nvidia Corporation Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries
US10241810B2 (en) 2012-05-18 2019-03-26 Nvidia Corporation Instruction-optimizing processor with branch-count table in hardware
US20140189310A1 (en) 2012-12-27 2014-07-03 Nvidia Corporation Fault detection in instruction translations
US10108424B2 (en) 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
US9684607B2 (en) * 2015-02-25 2017-06-20 Microsoft Technology Licensing, Llc Automatic recovery of application cache warmth
CN104375879B (en) * 2014-11-26 2018-02-09 康烁 Based on the binary translation method and device for performing tree depth
CN105893031B (en) * 2016-03-28 2019-12-24 广州华多网络科技有限公司 Cache operation implementation method, service layer method calling method and device
US20180210734A1 (en) * 2017-01-26 2018-07-26 Alibaba Group Holding Limited Methods and apparatus for processing self-modifying codes
US10613844B2 (en) * 2017-11-10 2020-04-07 International Business Machines Corporation Using comments of a program to provide optimizations
CN107902507B (en) * 2017-11-11 2021-05-04 林光琴 Control software field debugging system and debugging method
US11442740B2 (en) * 2020-09-29 2022-09-13 Rockwell Automation Technologies, Inc. Supporting instruction set architecture components across releases
CN112416338A (en) * 2020-11-26 2021-02-26 上海睿成软件有限公司 Code warehouse system based on label
CN117348889B (en) * 2023-12-05 2024-02-02 飞腾信息技术有限公司 Code translation processing method, system, computer system and computer equipment

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5313614A (en) * 1988-12-06 1994-05-17 At&T Bell Laboratories Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems
US5619665A (en) * 1995-04-13 1997-04-08 Intrnational Business Machines Corporation Method and apparatus for the transparent emulation of an existing instruction-set architecture by an arbitrary underlying instruction-set architecture
US5875318A (en) * 1996-04-12 1999-02-23 International Business Machines Corporation Apparatus and method of minimizing performance degradation of an instruction set translator due to self-modifying code
US6711667B1 (en) * 1996-06-28 2004-03-23 Legerity, Inc. Microprocessor configured to translate instructions from one instruction set to another, and to store the translated instructions
US6112280A (en) * 1998-01-06 2000-08-29 Hewlett-Packard Company Method and apparatus for distinct instruction pointer storage in a partitioned cache memory
US6205545B1 (en) * 1998-04-30 2001-03-20 Hewlett-Packard Company Method and apparatus for using static branch predictions hints with dynamically translated code traces to improve performance
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US6339822B1 (en) * 1998-10-02 2002-01-15 Advanced Micro Devices, Inc. Using padded instructions in a block-oriented cache
US6820255B2 (en) * 1999-02-17 2004-11-16 Elbrus International Method for fast execution of translated binary code utilizing database cache for low-level code correspondence
GB2348305A (en) * 1999-03-24 2000-09-27 Int Computers Ltd Instruction execution mechanism
US6516295B1 (en) * 1999-06-30 2003-02-04 Bull Hn Information Systems Inc. Method and apparatus for emulating self-modifying code
US6529862B1 (en) * 1999-06-30 2003-03-04 Bull Hn Information Systems Inc. Method and apparatus for dynamic management of translated code blocks in dynamic object code translation
US7072939B1 (en) * 2000-01-27 2006-07-04 International Business Machines Corporation Instant selective multiple soft document sharing between multiple heterogeneous computing devices
US20010049818A1 (en) * 2000-02-09 2001-12-06 Sanjeev Banerjia Partitioned code cache organization to exploit program locallity
US6615300B1 (en) * 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
US6980946B2 (en) * 2001-03-15 2005-12-27 Microsoft Corporation Method for hybrid processing of software instructions of an emulated computer system
US20030093775A1 (en) * 2001-11-14 2003-05-15 Ronald Hilton Processing of self-modifying code under emulation
GB2393274B (en) * 2002-09-20 2006-03-15 Advanced Risc Mach Ltd Data processing system having an external instruction set and an internal instruction set
GB2400938B (en) * 2003-04-22 2005-07-06 Transitive Ltd Method and apparatus for performing lazy byteswapping optimizations during program code conversion

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI447649B (en) * 2006-10-02 2014-08-01 Ibm Method and apparatus for administering a process filesystem with respect to program code conversion
TWI571802B (en) * 2014-11-25 2017-02-21 財團法人資訊工業策進會 Variable inference system and method for software program

Also Published As

Publication number Publication date
HK1068698A1 (en) 2005-04-29
CN1823322A (en) 2006-08-23
HK1068699A1 (en) 2005-04-29
GB0316532D0 (en) 2003-08-20
GB2404044A (en) 2005-01-19
CN100362475C (en) 2008-01-16
GB0328121D0 (en) 2004-01-07
GB2404043B (en) 2006-04-12
TWI362614B (en) 2012-04-21
CN1836210A (en) 2006-09-20
GB2404044B (en) 2006-07-26
IL172830A0 (en) 2006-06-11
CN100458687C (en) 2009-02-04
TW200515280A (en) 2005-05-01
GB2404043A (en) 2005-01-19
TWI365406B (en) 2012-06-01
GB0328119D0 (en) 2004-01-07

Similar Documents

Publication Publication Date Title
WO2005008487A3 (en) Method and apparatus for partitioning code in program code conversion
TW200516497A (en) Method and apparatus for partitioning code in program code conversion
WO2004072796A3 (en) Reconfigurable processing
WO2006044235A3 (en) Source code translator
WO2002005205A8 (en) Method and system for modeling biological systems
WO2005006120A3 (en) An intermediate representation for multiple exception handling models
GB0511414D0 (en) Method and apparatus for combined execution of native code and target code during program code conversion
WO2004070584A3 (en) Method and apparatus for converting objects between weakly and strongly typed programming frameworks
BR0306624A (en) UI and Framework Automation Framework Classes
BRPI0516727A (en) methods for treating a cd30 positive lymphoma, for inhibiting the growth of a cd30 expressing cell, and for treating or preventing a disease
WO2002103532A3 (en) Data processing method
WO2005024631A3 (en) Creating and checking runtime data types
DK313584D0 (en) PROCEDURES FOR ORGANIC SYNTHESIS OF OLIGOSACCHARIDS CONTAINING GALACTOSAMINE-URIC ACID MASTERS, OBTAINED BY THE PROCESS OIGOSACCHARIDES AND BIOLOGICAL APPLICATION OF SUCH OIGOSACCHARIDS
WO2002061576A3 (en) System, method and article of manufacture for interface constructs in a programming language capable of programming hardware architectures
EP1524596A3 (en) Systems and methods for using synthetic instructions in a virtual machine
WO2007021417A3 (en) Programmable search engine
BR0308211A (en) Coumarins Useful as Biomarkers
WO2006085639A3 (en) Methods and apparatus for instruction set emulation
NO950804L (en) Process for extracting a carotenoid compound
SE0100080D0 (en) New process
DE69927602D1 (en) PROCESS FOR PRODUCING VITAMIN POWDER
BR9914907A (en) Mineral capsule, process for its preparation, and use of the capsules
BRPI0412891A (en) compounds, process for preparing same, pesticidal agent, and process for combating phytopathogenic fungi
AU2002311289A8 (en) Point processing apparatus, point processing method, and program for instructing computer to execute the method
WO2003098436A3 (en) Method of controlling access to cryptographic resources