Preserving the content of a first register without affecting the content of a second register
    1.
    发明授权
    Preserving the content of a first register without affecting the content of a second register 失效
    保留第一寄存器的内容而不影响第二寄存器的内容

    公开(公告)号:US06807627B2

    公开(公告)日:2004-10-19

    申请号:US09765930

    申请日:2001-01-19

    IPC分类号: G06F9312

    摘要: Techniques are disclosed for preserving first content in a first register. In one embodiment, the first register is a general register, a second register is a UNaT register, and each general register is associated with a NaT bit. To preserve the content of the UNaT register while saving the content of a general register and its associated NaT bit, the content of the general register is saved to a floating-point register, and the NaT bit associated with the general register is also saved. If the NaT bit is set, then only the NaT bit is restored. Conversely, if the NaT bit is not set, then both the content of the general register and the NaT bit are restored.

    摘要翻译: 公开了用于在第一寄存器中保存第一内容的技术。 在一个实施例中,第一寄存器是通用寄存器,第二寄存器是UNaT寄存器,每个通用寄存器与一个NaT位相关联。 为了保存UNaT寄存器的内容,同时保存通用寄存器及其关联的NaT位的内容,通用寄存器的内容将保存到浮点寄存器,并且与通用寄存器相关联的NaT位也被保存。 如果NaT位被置位,则仅恢复NaT位。 相反,如果NaT位未设置,则通用寄存器的内容和NaT位都将被恢复。

    Preserving program context when adding probe routine calls for program instrumentation

    公开(公告)号:US07107579B2

    公开(公告)日:2006-09-12

    申请号:US10143429

    申请日:2002-05-09

    IPC分类号: G06F9/44

    CPC分类号: G06F9/4484

    摘要: Method and apparatus for preserving program context when causing execution of a probe routine from a target routine of an executable computer program code. Executable code for the probe routine is created such that the probe routine does not reference a first set of registers that are usable by the target routine. A modified version of the target routine is created to cause execution of the probe routine. The modified version of the target routine is performed instead of the original version when the target routine is called during program execution. A second set of registers on the processor register stack is allocated when the probe routine is invoked. The second set of registers is not manipulated by the probe routine so as to avoid changing contents of registers of the register stack that are used by the target routine.

    Instrumentation of code having predicated branch-call and shadow instructions
    3.
    发明授权
    Instrumentation of code having predicated branch-call and shadow instructions 有权
    具有预分支调用和阴影指令的代码的仪器

    公开(公告)号:US06931632B2

    公开(公告)日:2005-08-16

    申请号:US10005302

    申请日:2001-11-08

    摘要: Method and apparatus for instrumentation of an executable computer program that includes a predicated branch-call instruction followed by a call-shadow instruction. The predicated branch-call instruction and the call-shadow instruction is stored in a first bundle of instructions, which is followed by a second bundle. The predicated branch-call instruction is changed to a predicated branch instruction that targets a fifth bundle of instructions, and the predicate of the predicated branch instruction is the same as the predicate of the predicated branch-call instruction. Third, fourth, and fifth bundles are created to preserve program semantics. The third bundle is inserted following the first bundle and includes the call-shadow instruction. The fourth bundle is inserted following the third bundle and includes a branch instruction that targets the second bundle. The fifth bundle is inserted following the fourth bundle and includes a branch-call instruction that has a target address equal to the target address of the predicated branch-call instruction. Instrumentation instructions are then inserted.

    摘要翻译: 用于仪器化可执行计算机程序的方法和装置,其包括一个预先指派的分支调用指令,后跟一个调用 - 阴影指令。 预测的分支调用指令和调用指令被存储在第一指令束中,随后是第二束。 预测的分支调用指令被改变为目标第五指令束的预测分支指令,并且预测分支指令的谓词与预测分支调用指令的谓词相同。 创建第三,第四和第五个包以保留程序语义。 第三个软件包按照第一个软件包插入,并包含调用阴影指令。 第四个捆绑包插入第三个捆绑包之后,并包括一个分支指令,目标是第二个捆绑包。 第五束被插入到第四束之后,并且包括具有等于预测分支呼叫指令的目标地址的目标地址的分支调用指令。 然后插入仪器说明。

    Unwinding instrumented program code

    公开(公告)号:US07131115B2

    公开(公告)日:2006-10-31

    申请号:US10105765

    申请日:2002-03-25

    IPC分类号: G06F9/44

    CPC分类号: G06F9/4486

    摘要: Method and apparatus for handling call stack unwinding when execution of an instrumented program is stopped in a first function of the instrumented program. When unwinding is initiated and a call to a second function of unwind software is made, the call to the second function is intercepted. The second function returns a reference to unwind information associated with the first function of the instrumented program. The unwind information includes references to locations of selected instructions in the function. If the first function of the instrumented program is instrumented with instrumentation code, then updated unwind information is created. The updated unwind information includes updated references to the locations of the selected instructions in the first function as offset by the instrumentation code. A reference to the updated unwind information is returned.

    Analysis of executable program code using compiler-generated function entry points and endpoints with other sources of function entry points and endpoints
    5.
    发明授权
    Analysis of executable program code using compiler-generated function entry points and endpoints with other sources of function entry points and endpoints 有权
    使用编译器生成的函数入口点和具有其他功能入口点和端点源的端点来分析可执行程序代码

    公开(公告)号:US06817014B2

    公开(公告)日:2004-11-09

    申请号:US09833249

    申请日:2001-04-11

    IPC分类号: G06F945

    CPC分类号: G06F11/3612

    摘要: Method and apparatus for analysis of executable program code. The executable program includes segments of code that correspond to callable functions in the source code from which the executable code was generated. Compiler-generated checkpoint descriptors are included in the executable and include pairs of entry points and endpoints. Each pair of entry points and endpoints is associated with a callable function in the source code. The pairs of entry points and endpoints are read from the executable program code and used to generate analysis data for the associated functions. In other embodiments, pairs of entry points and endpoints are additionally assembled from dynamic load modules and symbol tables.

    摘要翻译: 用于分析可执行程序代码的方法和装置。 可执行程序包括对应于生成可执行代码的源代码中的可调用函数的代码段。 编译器生成的检查点描述符包含在可执行文件中,并包括入口点和端点对。 每对入口点和端点与源代码中的可调用函数相关联。 从可执行程序代码中读取入口点和端点对,并用于生成相关函数的分析数据。 在其他实施例中,还从动态加载模块和符号表中组合入口点和端点对。

    Method and system to analyze inlined functions
    6.
    发明授权
    Method and system to analyze inlined functions 失效
    分析内联函数的方法和系统

    公开(公告)号:US07360207B2

    公开(公告)日:2008-04-15

    申请号:US10016949

    申请日:2001-12-13

    IPC分类号: G06F9/45

    摘要: A method and a system for examining an inlined function using a performance analysis tool are described. An inlined function is identified in computer code. Upon identification of the inlined function, and for example in response to executing a breakpoint associated with the inlined function, a performance analysis tool is used to perform desired task on the inlined function.

    摘要翻译: 描述了使用性能分析工具检查内联功能的方法和系统。 在计算机代码中标识了内联函数。 在识别内联函数时,并且例如响应于执行与内联函数相关联的断点,使用性能分析工具来对内联函数执行期望的任务。

    Providing debugging capability for program instrumented code
    7.
    发明授权
    Providing debugging capability for program instrumented code 失效
    为程序化代码提供调试功能

    公开(公告)号:US06957421B2

    公开(公告)日:2005-10-18

    申请号:US09771403

    申请日:2001-01-26

    IPC分类号: G06F11/36 G06F9/44

    CPC分类号: G06F11/3644

    摘要: The present invention, in various embodiments, is directed to techniques for providing debugging capability for program code instrumentation. In one embodiment, an instrumentor inserts an instrumentation breakpoint at the beginning of a block of original code. When this breakpoint is reached during execution of the application program that includes the block of original code, the instrumenator, from the block of original code, generates a block of instrumented code. This block of instrumented code may include debugging breakpoints that are carried from the block of original code or are inserted into the block of instrumented code during debugging. After generating the instrumented code, the instrumentor executes the instrumented code until debugging breakpoints are reached that stop the program flow, thereby allowing a programmer to perform debugging functions at these debugging breakpoints.

    摘要翻译: 在各种实施例中,本发明涉及用于提供用于程序代码检测的调试能力的技术。 在一个实施例中,工具在原始代码块的开头插入检测断点。 当在包括原始代码块的应用程序的执行期间达到该断点时,从原始代码块的主机产生一个检测代码块。 该程序化代码块可能包括调试断点,从原始代码块携带或在调试期间插入到检测代码块中。 生成仪器化代码后,仪器将执行检测代码,直到达到停止程序流程的断点,从而允许程序员在这些调试断点处执行调试功能。

    Optimization of control transfers to dynamically loaded modules
    8.
    发明授权
    Optimization of control transfers to dynamically loaded modules 有权
    优化控制转移到动态加载的模块

    公开(公告)号:US06934943B2

    公开(公告)日:2005-08-23

    申请号:US10004015

    申请日:2001-10-18

    IPC分类号: G06F9/44 G06F9/445 G06F9/45

    CPC分类号: G06F9/44521

    摘要: Method and apparatus for optimization of an executable program that calls procedures in a shared library. Code segments that read procedure address information from a linkage table are first identified. Each linkage code segment is associated with a call to a procedure in the shared library, and the address information in the linkage table is associated with the procedures in the shared library. During program execution, the address information is read from the linkage table and substitute code segments are generated for the linkage code segments. Each substitute code segment has direct loads of the address information for calling the associated procedure instead of the original references to the linkage table. Thereafter, the substitute code segments are executed instead of the linkage code segments.

    摘要翻译: 用于优化在共享库中调用过程的可执行程序的方法和装置。 首先识别从链接表读取过程地址信息的代码段。 每个链接代码段与对共享库中的过程的调用相关联,链接表中的地址信息与共享库中的过程相关联。 在程序执行期间,从链接表中读取地址信息,并为链接代码段生成替代代码段。 每个替代代码段具有用于调用相关程序的地址信息的直接加载,而不是对链接表的原始引用。 此后,执行替代代码段而不是链接代码段。

    Edge profiling for executable program code having branches through stub code segments
    9.
    发明授权
    Edge profiling for executable program code having branches through stub code segments 失效
    可执行程序代码的边缘分析,具有通过存根代码段的分支

    公开(公告)号:US06795964B2

    公开(公告)日:2004-09-21

    申请号:US09883710

    申请日:2001-06-18

    IPC分类号: G06F944

    CPC分类号: G06F11/3612 G06F9/4486

    摘要: Method and apparatus for profiling edges that pass through stub code segments in executable program code. The compilation and linking of a computer program sometimes generates stub code segments that implement the transfer of control to functions that are external to a local segment of code. Branches through the stub code segments hinder the analysis of edges relative to the source code. In various embodiments of the invention, edges are created to represent respective branch instructions in the executable program code. Each edge has a source attribute, a target attribute, and an edge-taken count attribute. During execution, the numbers of times edges are taken are counted, and stub entry points and stub targets are identified. For each edge having a target that matches an entry point of a stub code segment, the edge target is changed to the stub target associated with the matching entry point. By identifying edges that target stub code segments, edges that target stub code segments can be combined with other edges for correlation with the source code.

    摘要翻译: 用于分析通过可执行程序代码中的存根代码段的边缘的方法和装置。 计算机程序的编译和链接有时会生成存根代码段,实现将控制传递到本地代码段外部的函数。 通过存根代码段的分支阻碍了相对于源代码的边缘分析。 在本发明的各种实施例中,创建边缘以表示可执行程序代码中的相应分支指令。 每个边缘都有一个源属性,一个目标属性和一个边缘计数属性。 在执行期间,计数边缘的次数,并确定存根输入点和存根目标。 对于具有与存根代码段的入口点匹配的目标的每个边缘,边缘目标被改变为与匹配入口点相关联的存根目标。 通过识别针对存根代码段的边,可以将目标存根代码段的边与其他边组合,以与源代码相关。