Patents by Inventor David M. Gillies

David M. Gillies has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Patent number: 7197748
    Abstract: Each component binary in a heterogeneous program is translated from a platform-specific instruction set into a set of intermediate representation (IR) instructions that are platform-neutral. The IR instructions are grouped into IR code blocks, the IR code blocks into IR procedures, and the IR procedures into IR components to create an intermediate representation hierarchy for the program. An application program interface is provided that permits user access to the IR hierarchy for instrumentation, optimization, navigation, and manipulation of the IR hierarchy. The transformed IR hierarchy is then translated into platform-specific instructions and output as a modified binary. The user can designate a different platform for the output translation of a code block than the platform for which the code block was originally written. Prologue and epilog code is added to contiguous blocks that are translated into different architectures.
    Type: Grant
    Filed: August 4, 2004
    Date of Patent: March 27, 2007
    Assignee: Microsoft Corporation
    Inventors: Ronnie I. Chaiken, Hon Keat W. Chan, Andrew J. Edwards, Gregory A. Eigsti, David M. Gillies, Bruce M. Kuramoto, John A. Lefor, Ken B. Pierce, Amitabh Srivastava, Hoi H. Vo, Gideon A. Yuval
  • Patent number: 6854110
    Abstract: A system and method for obtaining scratch registers in a computer-executable binary is provided. Register allocation requests in a computer-executable binary are discovered. In one method, the register allocations are examined procedure-by-procedure. The maximum number of registers requested by any instruction in the procedure is discovered. Then, register requests in the procedure are modified to request the maximum number discovered plus a number of scratch registers. In another method, the register allocations are examined block-by block within a procedure. Dominating register allocations for each block are found. Then the dominating register allocations are modified to request scratch registers.
    Type: Grant
    Filed: December 21, 2000
    Date of Patent: February 8, 2005
    Assignee: Microsoft Corporation
    Inventors: David M. Gillies, Ronnie Chaiken, Jiyang Liu
  • Patent number: 6802056
    Abstract: Each component binary in a heterogeneous program is translated from a platform-specific instruction set into a set of intermediate representation (IR) instructions that are platform-neutral. The IR instructions are grouped into IR code blocks, the IR code blocks into IR procedures, and the IR procedures into IR components to create an intermediate representation hierarchy for the program. An application program interface is provided that permits user access to the IR hierarchy for instrumentation, optimization, navigation, and manipulation of the IR hierarchy. The transformed IR hierarchy is then translated into platform-specific instructions and output as a modified binary. The user can designate a different platform for the output translation of a code block than the platform for which the code block was originally written. Prologue and epilog code is added to contiguous blocks that are translated into different architectures.
    Type: Grant
    Filed: June 30, 1999
    Date of Patent: October 5, 2004
    Assignee: Microsoft Corporation
    Inventors: Ronnie I. Chaiken, Hon Keat W. Chan, Andrew J. Edwards, Gregory A. Eigsti, David M. Gillies, Bruce M. Kuramoto, John A. Lefor, Ken B. Pierce, Amitabh Srivastava, Hoi H. Vo, Gideon A. Yuval
  • Publication number: 20020083425
    Abstract: A system and method for obtaining scratch registers in a computer-executable binary is provided. Register allocation requests in a computer-executable binary are discovered. In one method, the register allocations are examined procedure-by-procedure. The maximum number of registers requested by any instruction in the procedure is discovered. Then, register requests in the procedure are modified to request the maximum number discovered plus a number of scratch registers. In another method, the register allocations are examined block-by block within a procedure. Dominating register allocations for each block are found. Then the dominating register allocations are modified to request scratch registers.
    Type: Application
    Filed: December 21, 2000
    Publication date: June 27, 2002
    Applicant: Microsoft Corporation
    Inventors: David M. Gillies, Ronnie Chaiken, Jiyang Liu
  • Patent number: 5943499
    Abstract: The relationships among predicates can be analyzed over the scope of an entire procedure. The system scans a block of predicated code and collects a set of predicates used in the code to form a basis set. The system then allocates a bit-vector for each predicate in the basis set to form a live set. Each bit-vector represent a liveness of each predicate. The system then builds an interference graph that symbolizes interferences between registers during allocation of registers.
    Type: Grant
    Filed: November 27, 1996
    Date of Patent: August 24, 1999
    Assignee: Hewlett-Packard Company
    Inventors: David M. Gillies, Dz-ching Ju
  • Patent number: 5937195
    Abstract: The relationships among predicates are tracked globally by uniformly treating both control flow and explicit predicates by mapping them to a single connected partition graph. This allows for the analysis of predicate relations based on the scope of an entire procedure. This predicate analysis can be invoked by various phases of compiler optimization without being constrained by an incremental update of any persistent data structures.
    Type: Grant
    Filed: November 27, 1996
    Date of Patent: August 10, 1999
    Assignee: Hewlett-Packard Co
    Inventors: Dz-ching Ju, David M. Gillies
  • Patent number: 5768595
    Abstract: An optimizing compiler for producing executable programs from code, high level languages compiles the code whilst generating data from which a callgraph may be constructed, and then recompiles the procedures identified in the callgraph in an order which reverses the topology of the callgraph while monitoring usage of hardware registers. Procedures which are rarely or never called, or result in termination of the program, are identified, and are modified if needed so that if called, registers which they may modify are saved prior to execution of the procedure and subsequently restored if necessary, so that in a calling procedure, subsequently recompiled, no account need be taken of possible register usage by the called procedure. This makes additional registers available to the calling procedure, and enables register storing and restoring which must otherwise be associated with the callsite to be eliminated.
    Type: Grant
    Filed: February 7, 1996
    Date of Patent: June 16, 1998
    Assignee: International Business Machines Corporation
    Inventor: David M. Gillies