Source: http://www.google.com/patents/US5301325?dq=6985872
Timestamp: 2016-10-21 10:07:33
Document Index: 325513778

Matched Legal Cases: ['art: 1724864', 'art: 1726048', 'art: 1725112', 'art: 1725480', 'art: 1725680', 'art: 1725944']

Patent US5301325 - Use of stack depth to identify architechture and calling standard ... - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign inPatentsA code translator, constructed similar to a compiler, accepts as an input to be translated the assembly code written for one architecture (e.g., VAX), and produces as an output object code for a different machine architecture (e.g., RISC). The input code is converted into an intermediate language, and...http://www.google.com/patents/US5301325?utm_source=gb-gplus-sharePatent US5301325 - Use of stack depth to identify architechture and calling standard dependencies in machine codeAdvanced Patent SearchTry the new Google Patents, with machine-classified Google Scholar results, and Japanese and South Korean patents.Publication numberUS5301325 APublication typeGrantApplication numberUS 07/666,083Publication dateApr 5, 1994Filing dateMar 7, 1991Priority dateMar 7, 1991Fee statusPaidPublication number07666083, 666083, US 5301325 A, US 5301325A, US-A-5301325, US5301325 A, US5301325AInventorsThomas R. BensonOriginal AssigneeDigital Equipment CorporationExport CitationBiBTeX, EndNote, RefManPatent Citations (3), Non-Patent Citations (4), Referenced by (95), Classifications (11), Legal Events (7) External Links: USPTO, USPTO Assignment, EspacenetUse of stack depth to identify architechture and calling standard dependencies in machine code
US 5301325 AAbstract
1. A method executed on a processor for operating on computer code, said computer code being in a first language and including references to a stack pointer, comprising the steps of:accessing said computer code and generating therefrom a flow graph in an intermediate language, the flow graph being composed of blocks, and the blocks being composed of intermediate-language elements, where each element represents a single expression in said code, and where each block represents a sequence of at least one element; tracing through each block of said flow graph to detect any stack-affecting elements which have the effect of modifying said stack pointer, said stack-affecting elements incrementing or decrementing said stack pointer, and recording for each block the difference between the number of stack-affecting elements which increment said stack pointer and the number of said stack-affecting elements which decrement said stack pointer to thereby record the net change in the stack pointer by elements of said block, and also recording the difference between the number of stack-affecting elements which increment said stack pointer and the number of said stack-affecting elements which decrement said stack pointer to thereby record the net change in the total depth of the stack from the beginning of said tracking; and in response to said recording of said net change in said stack pointer and said net change in stack depth, visually reporting to a user of said processor the identity of selected blocks, said selected blocks having potentially improper stack references. 2. A method according to claim 1 wherein said step of tracing includes the step of recording for each block that said block has been visited in said tracing, and in tracing through each block of said flow graph checking each block before entering to see if the block has been visited, and, if so, going to another block rather than visiting said block again.
7. Computer apparatus for operating on computer code, said computer code being in a first language and including references to a stack pointer, comprising:means for accessing said computer code and generating a flow graph in an intermediate language from said code, the flow graph being composed of blocks, and the blocks being composed of tuples, where each tuple represents a single expression in said code, and where each block represents a sequence of at least one tuple beginning with an entry and ending in a branch or return with no intermediate exit or entry; means for tracing through each block of said flow graph to detect any stack-affecting tuple which have the effect of modifying the stack pointer, said stack-affecting tuples incrementing or decrementing said stack pointer, and means for recording for each block the difference between the number of stack-affecting tuples which increment said stack pointer and the number of said stack-affecting tuples which decrement said stack pointer to thereby record the net change in the stack pointer by tuples of said block, and also recording the difference between the number of stack-affecting tuples which increment said stack pointer and the number of said stack-affecting tuples which decrement said stack pointer to thereby record the net change in the total depth of the stack from the beginning of said tracing; and means responsive to said recording of said net change in said stack pointer and said net change in stack depth for visually reporting to a user of said computer apparatus the identity of selected blocks, said selected blocks having potentially improper stack references. 8. Apparatus according to claim 7, wherein said means for tracing includes means for recording for each block that said block has been visited in said tracing, and means effective in tracing through each block of said flow graph for checking each block before entering to see if the block has been visited, and, if so, going to another block rather than visiting said block again.
12. A method executed on a processor, comprising the steps of:accessing said computer code and of compiling input code written for a first machine architecture to produce object code for a different machine architecture, said input code being in a first language and including references to a stack pointer, comprising the steps of: accessing said input code and generating a flow graph in an intermediate language from said input code by a converter, the flow graph being composed of blocks, and the blocks being composed of tuples, where each tuple represents a single expression in said input code, and where each block represents a sequence of at least one tuple beginning with an entry and ending in a branch or return with no intermediate exit or entry; tracing through each block of said flow graph to detect stack-affecting tuples which have the effect of modifying the stack pointer, said stack-affecting tuples incrementing or decrementing said stack pointer, and recording for each block the difference between the number of stack-affecting tuples which increment said stack pointer and the number of said stack-affecting tuples which decrement said stack pointer to thereby record the net change in the stack pointer by stack-affecting tuples of said block which have the effect of modifying the stack pointer, and also recording the difference between the number of stack-affecting tuples which increment said stack pointer and the number of said stack-affecting tuples which decrement said stack pointer to thereby record the net change in the total depth of the stack from the beginning of said tracing; and in response to said recording of said net change in said stack pointer and said net change in stack depth, visually reporting to a user of said processor the identity of selected blocks, said selected blocks having potentially improper stack references. 13. A method according to claim 10 wherein said step of tracing includes the step of recording for each block that said block has been visited in said tracing, and in tracing through each block of said flow graph checking each block before entering to see if the block has been visited, and, if so, going to another block rather than visiting said block again.
16. A method executed on a processor for operating on computer code, said computer code being in a first language and including references to a stack pointer, comprising the steps of:accessing said computer code and generating therefrom a flow graph in an intermediate language from said code, the flow graph being composed of blocks, and the blocks being composed of tuples, where each tuple represents a single expression in said code, and where each block represents a sequence of at least one tuple beginning with an entry and ending in a branch or return with no intermediate exit or entry; tracing through each block of said flow graph to identify stack-affecting tuples which reference the stack or have the effect of incrementing or decrementing the stack pointer, and recording for each block the difference between the number of stack-affecting tuples which increment said stack pointer and the number of said stack-affecting tuples which decrement said stack pointer to thereby record the net change in the stack pointer by tuples of said block, and also recording the difference between the number of stack-affecting tuples which increment said stack pointer and the number of said stack-affecting tuples which decrement said stack pointer to thereby record the net change in the total depth of the stack from the beginning of said tracing, upon completing said step of tracing for all of said blocks, in response to said recording of said net change in said stack pointer and said net change in stack depth, visually reporting to a user of said processor the identity of selected blocks, said selected blocks having potentially improper stack references. 17. A method according to claim 16 wherein said code includes a plurality of callable routines.
______________________________________  Test:       .jsb-- entry       pushl      r0       beql       lab2       addl3      r1, r2, -(sp)       blss       lab1       movl       (sp)+, r3       brb        lab2  lab1:       addl2      #4, sp  lab2:       popl       r5       rsb______________________________________
______________________________________  .entry rout1           M&lt;R2&gt;          .          .          .          tstl      (AP)          beql      lab1          movl      4(AP),R0          movl      8(AP),R2          .          .          .  lab1    .          .______________________________________
__________________________________________________________________________APPENDIX A__________________________________________________________________________00000000 10000000022  Test:       .jsb-- entry  1724864:        jsb-- entry             (1.1) next:1724936,                      prev:1726016,  flags: 0             Name: TEST0000000023     push1   r0  1724936:       regref            (1,9) next:1724896,  prev:1724864,                             flags: 0             Register: R0, read, unaligned  1724896:       instr            (1,1) next:1725024,  prev:1724936,                             flags: 0             Opcode: 227, allocated operands: 1             Regs Used: none             Op 1: 17249360000000224     beq1   lab2  1725024:       synref            (1,2) next:1724976,  prev:1724896,                             flags: 0             Name: LAB2  Use count: 1             Access: unspecified  1724976:       condbr            (1,1) next:1725112,  prev:1725024,                             flags: 0             Opcode: 20, Regs Used: none             Op 1: 17250240000000425     add13  r1, r2, -(sp)  1725112:       regref            (1,9) next:1725152,  prev:1724976,                             flags: 0             Register: R1, read, unaligned  1725132:       regref            (1,9) next:1725232,  prev:1725112,                             flags: 0             Register: R2, read, unaligned  1725232:       regref            (1,2) next:1725192,  prev:1725152,                             flags: 0             Register: SP, read, unaligned  1725192:       memref            (2,9) next:1725064,  prev:1725232,                             flags: 4             Access: write autodac  Use count: 1             Op 1: 1725232  1725064:       instr            (1,1) next:1725320,  prev:1725192,                             flags: 0             Opcode: 198,  allocated operands: 3             Regs Used: none             Op 1: 1725112             Op 2: 1725152             Op 3: 17251920000000826     blss  lab1  1725320:       synref            (1,2) next:1725272,  prev:1725064,                             flags: 0             Name: LAB1  Use count: 1             Access: unspecified  1725272:       condbr            (1,1) next:1725440,  prev:1725320,                             flags: 0             Opcode: 27, Regs Used: none             Op 1: 17253200000000A27     nov1  (sp)+, r3  1725440:       regref            (1,2) next:1725400,  prev:1725272,                             flags: 0             Register: SP, read, unaligned  1725400:       memref            (2,9) next:1725480,  prev:1725440,                             flags: 2             Access: read autoinc  Use count: 1             Op 1: 1725440  1725480:       fetch            (9,9) next:1725520,  prev:1725400,                             flags: 0             Op 1: 1725400  1725520:       regref            (1,9) next:1725360,  prev:1725480,                             flags: 0             Register: R3, write, unaligned  1725360:       instr            (1,1) next:1725600,  prev:1725520,                             flags: 0             Opcode: 213,  allocated operands: 2             Regs Used: none             Op 1: 1725480             Op 2: 17255200000000D28     brb  lab2  1725600:       symref            (1,2) next:1725560,  prev:1725360,                             flags: 0             Name: LAB2  Use count: 1             Access: unspecified  1725560:       branch            (1,1) next:1725680,  prev:1725600,                             flags: 0             Op 1: 17256000000000F29  lab1:       add12  #4, sp  1725680:       label            (1,1) next:1725712,  prev:1725560,                             flags: 0             Name: LAB1  1725712:       litref            (5,9) next:1725744,  prev:1725680,                             flags: 0             Literal Value: 4  1725744:       regref            (1,9) next:1725640,  prev:1725712,                             flags: 0             Register: SP, read/write, unaligned  1725640:       instr            (1,1) next:1725944,  prev:1725744,                             flags: 0             Opcode: 197,  allocated operands: 2             Regs Used: none             Op 1: 1725712             Op 2: 17257440000001230  lab2:       popl   r5  1725944:       label            (1,1) next:1725864,  prev:1725640,                             flags: 0             Name: LAB2  1725864:        regref            (1,2) next:1725824,  prev:1725944,                             flags: 0             Register: SP, read, unaligned  1725824:       memref            (2,9) next:1725904,  prev:1725864,                             flags: 2             Access: read autoinc   Use count: 1             Op 1: 1725864  1725904:       fetch            (9,9) next:1725976,  prev:1725824,                             flags: 0             Op 1: 1725824  1725976:       regref            (1,9) next:1725784,  prev:1725904,                             flags: 0             Register: R5, write, unaligned  1725784:       instr            (1,1) next:1726016,  prev:1725976,                             flags: 0             Opcode: 213,  allocated operands: 2             Regs Used: none             Op 1: 1725904             Op 2: 17259760000001531     rsb  1726016:       rsb  (1,1) next:1724864,  prev:1725784,                             flags: 0__________________________________________________________________________
__________________________________________________________________________APPENDIX B__________________________________________________________________________Flow Analyzer Output: PSECT . BLANK . -----------******** NODE 4 - address: 1720120   start: 1724864  end:1725600********routine: TEST (lexically: TEST)1 predecessors: 11 successors: 5 (depth first: 5)Initial Stack Depth: 0, Stack Change: 0Input Registers: 0-2Written Registers: none1724864:jsb-- entry      (1.1) next:1725024,   prev:1726016,      flags: 0      Name: TEST1725024:synref     (1,2) next:1726360,  prev:1724864,                        flags: 4      Name: LAB2  Use count: 1      Access: unspecified1726360:regref     (1,2) next:1726240,  prev:1725024,                        flags: 0      Register: SP, read, unaligned1726240:memref     (2,9) next:1726320,  prev:1726360,                        flags: 2      Access: read/write autoinc   Use count: 1      Op 1: 17263601726320:regref     (1,2) next:1726200,  prev:1726240,                        flags: 0      Register: SP, read, unaligned1726200:memref     (2,9) next:1725320,  prev:1726320,                        flags: 4      Access: write autodec   Use count: 1      Op 1: 17263201725320:synref     (1,2) next:1726280,  prev:1726200,                        flags: 4      Name: LAB1  Use count: 1      Access: unspecified1726280:regref     (1,2) next:1725232,  prev:1725320,                        flags: 0      Register: SP, read, unaligned1725232:memref     (2,9) next:1725600,  prev:1726280,                        flags: 2      Access: read/write autoinc   Use count: 1      Op 1: 17262801725600:synref     (1,2) next:1726048,  prev:1725232,                        flags: 4      Name: LAB2  Use count: 1      Access: unspecified******** NODE 5 - address: 1720328   start: 1726048  end:1724976********routine: TEST (lexically: TEST)1 predecessors: 42 successors: 6 9 (depth first: 6)Initial Stack Depth: 0, Stack Change: 4Input Registers: 0-2, 29-30Written Registers: noneCCs used: VNZ1726048:label     (0,0) next:1724936,  prev:1725600,                        flags: 0      Name: $L11724936:regref     (1,9) next:1724896,  prev:1726048,                        flags: 20      Register: R0, read, aligned1724896:instr     (1,1) next:1724976,  prev:1724936,                        flags: c      Instruction flags: set-- ns local-- ns      Opcode: 227, allocated operands: 1      Regs Used: 0      Op 1: 17249361724976:condbr     (1,1) next:1725112,  prev:1724896,                        flags: 0      Opcode: 20, Regs Used: none      Op 1: 1725024******** NODE 6 - address: 1720792   start: 1725112  end:1725272********routine: TEST (lexically: TEST)1 predecessors: 52 successors: 7 8 (depth first: 8)Initial Stack Depth: 4, Stack Change: 4Input Registers: 1-2, 29-30Written Registers: noneCCs used: CVNZ1725112:regref     (1,9) next:1725152,  prev:1724976,                        flags: 20      Register: R1, read, aligned1725152:regref     (1,9) next:1725064,  prev:1725112,                        flags: 20      Register: R2, read, aligned1725064:instr     (1,1) next:1725272,  prev:1725152,                        flags: c      Instruction flags: set-- nz local-- nz      Opcode: 198, allocated operands: 3      Regs Used: 1-2, 30      Op 1: 1725112      Op 2: 1725152      Op 3: 17262001725272:condbr     (1,1) next:1725480,  prev:1725064,                        flags: 0      Opcode: 27, Regs Used: none      Op 1: 1725320******** NODE 7 - address: 1720944   start: 1725480  end:1725560********routine: TEST (lexically: TEST)1 predecessors: 61 successors: 9 (depth first: 9)Initial Stack Depth: 8, Stack Change: -4Input Registers: 29-30Written Registers: 3CCs used: VNZ1725480:fetch     (9,9) next:1725520,  prev:1725272,                        flags: 0      Op 1: 17252321725520:regref     (1,9) next:1725360,  prev:1725480,                        flags: 20      Register: R3, write, aligned1725360:instr     (1,1) next:1725560,  prev:1725520,                        flags: 0      Opcode: 213, allocated operands: 2      Regs Used: 3, 30      Op 1: 1725480      Op 2: 17255201725560:branch     (1,1) next:1725680,  prev:1725360,                        flags: 0      Op 1: 1725600******** NODE 8 - address: 1720536   start: 1725680  end:1725640********routine: TEST (lexically: TEST)1 predecessors: 62 successors: 0 9 (depth first: 7)Initial Stack Depth: 8, Stack Change: -4Input Registers: 29-30Written Registers: 30CCs used: CVNZ1725680:label     (1,1) next:1725712,  prev:1725560,                        flags: 0      Name: LAB11725712:litref     (5,9) next:1725744,  prev:1725680,                        flags: 0      Literal Value: 41725744:regref     (1,9) next:1725640,  prev:1725712,                        flags: 4      Register: SP, read/write, unaligned1725640:instr     (1,1) next:1725944,  prev:1725744,                        flags: 0      Opcode: 197, allocated operands: 2      Regs Used: 30      Op 1: 1725712      Op 2: 1725744******** NODE 9 - address: 1720640   start: 1725944  end:1726016********routine: TEST (lexically: TEST)3 predecessors: 8 7 51 successors: 0Initial Stack Depth: 4, Stack Change: -4Input Registers: 29-30Written Registers: 5CCs used: VNZ1725944:label     (1,1) next:1725904,  prev:1725640,                        flags: 0      Name: LAB21725904:fetch     (9,9) next:1725976,  prev:1725944,                        flags: 0      Op 1: 17262401725976:regref     (1,9) next:1725784,  prev:1725904,                        flags: 20      Register: R5, write, aligned1725784:instr     (1,1) next:1726016,  prev:1725976,                        flags: 0      Opcode: 213, allocated operands: 2      Regs Used: 5, 30      Op 1: 1725904      Op 2: 17259761726016:rsb  (1,1) next:1724864,  prev:1725784,                        flags: 0END PSECT . BLANK . -------------__________________________________________________________________________
__________________________________________________________________________APPENDIX D__________________________________________________________________________              00000000                     1              00000000                    22   test: .jsb-- entry                      1%AMAC-E-CONDZIN, (1) Condition code Z expected as input to routine TEST%AMAC-I-HINTRTN, (1) Compiler Hint: Possible Input Registers: R0 inroutine TEST%AMAC-I-HINTRTN, (1) Compiler Hint: Possible Output Registers: R0 R3 inroutine TEST%AMAC-I-HINTRTN, (1) Compiler Hint: Auto-Preserved Registers: R3 inroutine TEST              00000000                    23   beql lab1   ; Relies on a CC as input              00000002                    24              00000002                    25   movl r0, r3 ; R0 is an input register; r3                                     is considered              00000005                    26               ; output since it is not                                     subsequently read              00000005                    27              00000005                    28   movl 20(sp), r0                                     ; An uplevel stack reference                      1.......%AMAC-E-UPLEVSTK, (1) Up-level stack reference in routine TEST              00000009                    29              00000009                    30   jsb  @(sp)  ; A co-routine call back to                                     caller                      1.......%AMAC-E-COROUTCALL, (1) Co-routine call in routine TEST%AMAC-E-CONDZAFT, (1) Condition code Z expected after JSB in routineTEST              0000000C                    31              0000000C                    32   beql lab2   ; Relies on CC returned from                                     JSB routine              0000000E                    33              0000000E                    34   pushal                              extern-- label                                     ; Attempts to change the return                                     address on              00000014                    35               ; the stack              00000014                    36   rsb                      1.......%AMAC-E-ALTRETADDR, (1) Alternate return address on stack in routineTEST              00000015                    37              00000015                    38                      lab1:                         push1                              r0     ; In this path, an extra                                     longword is pushed              00000017                    39                      lab2:                         rsb         ; So stack depth is                                     unpredicatable here.                      1%AMAC-I-RUNTIMSTK, (1) Run time stack differences prevent accurate stacktracing              00000018                    40              00000018                    41   .end__________________________________________________________________________
Patent CitationsCited PatentFiling datePublication dateApplicantTitleUS5127103 *Nov 16, 1990Jun 30, 1992North American Philips CorporationReal-time tracing of dynamic local data in high level languages in the presence of process context switchesEP0372835A2 *Nov 30, 1989Jun 13, 1990AT&amp;T Corp.Translation techniqueWO1990001738A1 *Jul 10, 1989Feb 22, 1990Hunter Systems Software, Inc.Machine process for translating programs in binary machine language into another binary machine language* Cited by examinerNon-Patent CitationsReference1Banning, "The XDOS Binary Code Conversion System", COMPCON 89, Feb. 27, 1989, San Francisco, pp. 282-287.2 *Banning, The XDOS Binary Code Conversion System , COMPCON 89, Feb. 27, 1989, San Francisco, pp. 282 287.3Hunter et al., "DOS at RISC", Byte Magazine, vol. 14, No. 12, Nov. 1989, pp. 361-368.4 *Hunter et al., DOS at RISC , Byte Magazine, vol. 14, No. 12, Nov. 1989, pp. 361 368.* Cited by examinerReferenced byCiting PatentFiling datePublication dateApplicantTitleUS5473754 *Nov 23, 1993Dec 5, 1995Rockwell International CorporationBranch decision encoding schemeUS5557740 *May 30, 1995Sep 17, 1996International Business Machines CorporationMethod and system for providing device support testing for a plurality of operating systemsUS5615333 *May 11, 1995Mar 25, 1997Siemens AktiengesellschaftIntegration testing method for object-oriented softwareUS5644769 *Aug 19, 1996Jul 1, 1997Matsushita Electric Industrial Co., Ltd.System for optimizing program by virtually executing the instruction prior to actual execution of the program to invalidate unnecessary instructionsUS5732272 *Jul 31, 1995Mar 24, 1998Apple Computer, Inc.Subroutine execution time tracerUS5768595 *Feb 7, 1996Jun 16, 1998International Business Machines CorporationSystem and method for recompiling computer programs for enhanced optimizationUS5784638 *Feb 22, 1996Jul 21, 1998International Business Machines CorporationComputer system supporting control transfers between two architecturesUS5802373 *Jan 29, 1996Sep 1, 1998Digital Equipment CorporationMethod for providing a pipeline interpreter for a variable length instruction setUS5826089 *Jan 4, 1996Oct 20, 1998Advanced Micro Devices, Inc.Instruction translation unit configured to translate from a first instruction set to a second instruction setUS5842017 *Jan 29, 1996Nov 24, 1998Digital Equipment CorporationMethod and apparatus for forming a translation unitUS5872909 *Jun 7, 1995Feb 16, 1999Wind River Systems, Inc.Logic analyzer for softwareUS5903760 *Jun 27, 1996May 11, 1999Intel CorporationMethod and apparatus for translating a conditional instruction compatible with a first instruction set architecture (ISA) into a conditional instruction compatible with a second ISAUS5930509 *Jan 29, 1996Jul 27, 1999Digital Equipment CorporationMethod and apparatus for performing binary translationUS6000028 *Jan 29, 1996Dec 7, 1999Digital Equipment CorporationMeans and apparatus for maintaining condition codes in an unevaluated stateUS6035123 *Nov 8, 1995Mar 7, 2000Digital Equipment CorporationDetermining hardware complexity of software operationsUS6075942 *May 4, 1998Jun 13, 2000Sun Microsystems, Inc.Encoding machine-specific optimization in generic byte code by using local variables as pseudo-registersUS6091897 *Jan 29, 1996Jul 18, 2000Digital Equipment CorporationFast translation and execution of a computer program on a non-native architecture by use of background translatorUS6226789Jan 29, 1996May 1, 2001Compaq Computer CorporationMethod and apparatus for data flow analysisUS6314471Nov 13, 1998Nov 6, 2001Cray Inc.Techniques for an interrupt free operating systemUS6353829Dec 23, 1998Mar 5, 2002Cray Inc.Method and system for memory allocation in a multiprocessing environmentUS6415433 *Dec 23, 1998Jul 2, 2002Cray Inc.Method and system for identifying locations to move portions of the computer programUS6430676Dec 23, 1998Aug 6, 2002Cray Inc.Method and system for calculating instruction lookaheadUS6467082 *Dec 2, 1998Oct 15, 2002Agere Systems Guardian Corp.Methods and apparatus for simulating external linkage points and control transfers in source translation systemsUS6480818Nov 13, 1998Nov 12, 2002Cray Inc.Debugging techniques in a multithreaded environmentUS6502237Feb 11, 2000Dec 31, 2002Compaq Information Technologies Group, L.P.Method and apparatus for performing binary translation method and apparatus for performing binary translationUS6535903 *Jan 29, 1996Mar 18, 2003Compaq Information Technologies Group, L.P.Method and apparatus for maintaining translated routine stack in a binary translation environmentUS6665688Dec 23, 1998Dec 16, 2003Cray Inc.Method and system for automatically regenerating data on-demandUS6691303May 16, 2001Feb 10, 2004Esmertec AgMethod and system of testing and verifying computer code in a multi-threaded environmentUS6698011 *Jan 29, 1999Feb 24, 2004Intel CorporationIsolation of program translation failuresUS6766513May 16, 2001Jul 20, 2004Esmertec AgMethod and system of memory management using stack walkingUS6848097Sep 18, 2002Jan 25, 2005Cray Inc.Debugging techniques in a multithreaded environmentUS6862635Jul 27, 1999Mar 1, 2005Cray Inc.Synchronization techniques in a multithreaded environmentUS6862728May 16, 2001Mar 1, 2005Esmertec AgHash table dispatch mechanism for interface methodsUS6862730 *Apr 26, 2000Mar 1, 2005Lucent Technologies Inc.Register allocation in code translation between processorsUS6901587May 16, 2001May 31, 2005Esmertec AgMethod and system of cache management using spatial separation of outliersUS6925637May 16, 2001Aug 2, 2005Esmertec AgLow-contention grey object sets for concurrent, marking garbage collectionUS6952827Nov 13, 1998Oct 4, 2005Cray Inc.User program and operating system interface in a multithreaded environmentUS6961925Apr 3, 2001Nov 1, 2005Cray Inc.Parallelism performance analysis based on execution trace informationUS6976254Nov 28, 2001Dec 13, 2005Esmertec AgInter-method control transfer for execution engines with memory constraintsUS6988265 *Oct 12, 2001Jan 17, 2006Sun Microsystems, Inc.Method and apparatus for statement boundary detectionUS7007005May 16, 2001Feb 28, 2006Esmertec AgMethod and structure for reducing search timesUS7020767Feb 23, 2001Mar 28, 2006Cray Inc.Techniques for reducing the rate of instruction issuanceUS7039738May 16, 2001May 2, 2006Esmertec AgMethod and system for handling device driver interruptsUS7058929May 16, 2001Jun 6, 2006Esmertec AgDirect invocation of methods using class loaderUS7065717Jan 19, 1999Jun 20, 2006International Business Machines CorporationTree-based interface apparatus for display of call dependencies and method thereforUS7069549May 16, 2001Jun 27, 2006Esmertec AgMulti-threaded fragment patchingUS7080366May 16, 2001Jul 18, 2006Esmertec AgDynamic compiler and method of compiling code to generate dominant path and to handle exceptionsUS7117330Jun 12, 2003Oct 3, 2006Cray Inc.Synchronization techniques in a multithreaded environmentUS7165150Oct 30, 2003Jan 16, 2007Cray Inc.Restricting access to memory in a multithreaded environmentUS7191444Sep 16, 2003Mar 13, 2007Cray Inc.Stream management in a multithreaded environmentUS7219335 *Dec 8, 1999May 15, 2007Intel CorporationMethod and apparatus for stack emulation during binary translationUS7251811Jan 2, 2002Jul 31, 2007Intel CorporationControlling compatibility levels of binary translations between instruction set architecturesUS7340592Sep 29, 2000Mar 4, 2008Intel CorporationExecuting a translated block of instructions and branching to correction code when expected top of stack does not match actual top of stack to adjust stack at execution time to continue executing without restarting translatingUS7360221Sep 10, 2003Apr 15, 2008Cray Inc.Task swap out in a multithreaded environmentUS7392525Oct 1, 2003Jun 24, 2008Cray Inc.Inter-thread long jumps in a multithreaded environmentUS7426732Oct 10, 2003Sep 16, 2008Cray Inc.Placing a task of a multithreaded environment in a known stateUS7428727Sep 9, 2004Sep 23, 2008Cray Inc.Debugging techniques in a multithreaded environmentUS7500230 *Mar 25, 2005Mar 3, 2009Microsoft CorporationRaising native software codeUS7536690Sep 16, 2003May 19, 2009Cray Inc.Deferred task swapping in a multithreaded environmentUS7558889Jul 7, 2009Cray Inc.Accessing a collection of data items in a multithreaded environmentUS7558910Oct 30, 2003Jul 7, 2009Cray Inc.Detecting access to a memory location in a multithreaded environmentUS7689874 *Dec 11, 2006Mar 30, 2010Infineon Technologies AgData processing device and method for monitoring correct operation of a data processing deviceUS7739667Oct 19, 2005Jun 15, 2010Cray Inc.Parallelism performance analysis based on execution trace informationUS7774653 *Mar 17, 2004Aug 10, 2010Gemalto SaMethod to secure an electronic assembly executing any algorithm against attacks by error introductionUS7900193 *Mar 1, 2011Parasoft CorporationSystem and method for detecting defects in a computer program using data and control flow analysisUS7904685Jun 12, 2003Mar 8, 2011Cray Inc.Synchronization techniques in a multithreaded environmentUS8127280Jun 29, 2007Feb 28, 2012Myriad Group AgMethod and system for dynamic memory managementUS8631219Feb 3, 2012Jan 14, 2014Myriad Group AgMethod and system for dynamic memory managementUS20020032719 *May 16, 2001Mar 14, 2002Insignia Solutions, PlcMethod and system of dynamic memory managementUS20020032822 *May 16, 2001Mar 14, 2002Insignia Solutions, PlcMethod and system for handling device driver interruptsUS20020038332 *Feb 23, 2001Mar 28, 2002Alverson Gail A.Techniques for an interrupt free operating systemUS20020042807 *May 16, 2001Apr 11, 2002Insignia Solutions, Plc.Low-contention grey object sets for concurrent, marking garbage collectionUS20020104077 *May 16, 2001Aug 1, 2002Insignia Solutions, Plc.Multi-threaded fragment patchingUS20020108107 *May 16, 2001Aug 8, 2002Insignia Solutions, PlcHash table dispatch mechanism for interface methodsUS20020112227 *May 16, 2001Aug 15, 2002Insignia Solutions, Plc.Dynamic compiler and method of compiling code to generate dominant path and to handle exceptionsUS20020129339 *Apr 3, 2001Sep 12, 2002Callahan Charles DavidParallelism performance analysis based on execution trace informationUS20020165848 *May 16, 2001Nov 7, 2002Insignia Solutions, PlcMethod and structure for reducing search timesUS20030074651 *Oct 12, 2001Apr 17, 2003Allison David S.Method and apparatus for statement boundary detectionUS20030126587 *Jan 2, 2002Jul 3, 2003Roni RosnerControlling compatibility levels of binary translations between instruction set architecturesUS20040064816 *Oct 1, 2003Apr 1, 2004Alverson Gail A.Inter-thread long jumps in a multithreaded environmentUS20040064818 *Sep 16, 2003Apr 1, 2004Alverson Gail A.Deferred task swapping in a multithreaded environmentUS20040078795 *Oct 10, 2003Apr 22, 2004Alverson Gail A.Placing a task of a multithreaded environment in a known stateUS20040088711 *Sep 10, 2003May 6, 2004Alverson Gail A.Task swap out in a multithreaded environmentUS20040093603 *Sep 16, 2003May 13, 2004Alverson Gail A.Stream management in a multithreaded environmentUS20040093605 *Oct 29, 2003May 13, 2004Alverson Gail A.Accessing a collection of data items in a multithreaded environmentUS20040098721 *Oct 30, 2003May 20, 2004Alverson Gail A.Restricting access to memory in a multithreaded environmentUS20050021898 *Oct 30, 2003Jan 27, 2005Alverson Gail A.Detecting access to a memory location in a multithreaded environmentUS20050034024 *Sep 9, 2004Feb 10, 2005Alverson Gail A.Debugging techniques in a multithreaded environmentUS20060101416 *Oct 19, 2005May 11, 2006Callahan Charles D IiParallelism performance analysis based on execution trace informationUS20060218540 *Mar 25, 2005Sep 28, 2006Microsoft CorporationRaising native software codeUS20060282741 *Mar 17, 2004Dec 14, 2006Mehdi-Laurent AkkarMethod to secure an electronic assembly executing any algorithm against attacks by error introductionUS20080016507 *Jun 29, 2007Jan 17, 2008Esmertec AgComputer systemUS20080115132 *Dec 11, 2006May 15, 2008Infineon Technologies AgData processing device and method for monitoring correct operation of a data processing deviceUS20100042995 *Dec 11, 2006Feb 18, 2010Infineon Technologies AgData processing device and method for monitoring correct operation of a data processing deviceWO1997050031A1 *Jun 17, 1997Dec 31, 1997Intel CorporationMethod for increasing performance of binary translated conditional instructions* Cited by examinerClassifications U.S. Classification717/159, 717/156, 717/128, 717/132, 717/147, 714/38.1International ClassificationG06F9/45Cooperative ClassificationG06F8/76, G06F8/52European ClassificationG06F8/52, G06F8/76Legal EventsDateCodeEventDescriptionMar 7, 1991ASAssignmentOwner name: DIGITAL EQUIPMENT CORPORATION, 111 POWDERMILL ROADFree format text: ASSIGNMENT OF ASSIGNORS INTEREST.;ASSIGNOR:BENSON, THOMAS R.;REEL/FRAME:005651/0120Effective date: 19910227Nov 15, 1994CCCertificate of correctionSep 30, 1997FPAYFee paymentYear of fee payment: 4Sep 20, 2001FPAYFee paymentYear of fee payment: 8Jan 9, 2002ASAssignmentOwner name: COMPAQ INFORMATION TECHNOLOGIES GROUP, L.P., TEXASFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DIGITAL EQUIPMENT CORPORATION;COMPAQ COMPUTER CORPORATION;REEL/FRAME:012447/0903;SIGNING DATES FROM 19991209 TO 20010620Nov 3, 2003ASAssignmentOwner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXASFree format text: CHANGE OF NAME;ASSIGNOR:COMPAQ INFORMANTION TECHNOLOGIES GROUP LP;REEL/FRAME:014102/0224Effective date: 20021001Oct 5, 2005FPAYFee paymentYear of fee payment: 12RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services