Hexagon图形分析器介绍(二十一)
4.33 PC 跟踪事件
格式 :full
PCTR,CY=cyclenum,TH=tnum,PCVA=addr,PCPA=addr,INSTR=disasm,tregvaldata,gregvaldata,memvaldata
如下:
CY=cyclenum 循环次数(十进制)
TH=tnum 硬件线程数 (十进制)
PCVA=addr 指令的虚拟地址(以 0x 开头的十六进制)
PCPA=addr 指令的物理地址(以 0x 开头的十六进制)
INSTR=disasm 指令反汇编字符串(双引号字符串)
tregvaldata 线程寄存器名称/值对 name=val(带前导 0x 的十六进制值)
gregvaldata 全局寄存器名称/值对 name=val(带前导 0x 的十六进制值)
memvaldata 内存地址/值对 addr=val(以 0x 开头的十六进制地址和值)
格式 :bin
1 byte | PC_TRACE_ID = 0x25 |
8 bytes | 循环次数 |
1 byte | 硬件线程数 |
4 bytes | 指令的虚拟地址 |
4 bytes | 指令的物理地址 |
1 byte | 指令反汇编字符串byte数 [N] |
N bytes | 指令反汇编byte(无空终止符) |
1 byte | 线程寄存器 ID/值对的数量[T] |
T * 5 bytes | 线程寄存器 ID/值对。 每对包括:1 byte — 线程寄存器 ID 4 bytes — 线程寄存器值 |
1 byte | 全局寄存器 ID/值对的数量[G] |
G * 5 bytes | 全局寄存器 ID/值对。 每对包括: 全局寄存器 ID 全局寄存器值 |
1 byte | 内存地址/值对的数量 |
M * 8 bytes | 内存地址/值对。 每对包括:4 bytes — 内存地址 4 bytes — 内存值 |
4.34 PC 跟踪最小事件
格式:full
PCCRM,CY=cyclenum,TH=tnum,PC=addr
如下:
CY=cyclenum 循环数(十进制)
TH=tnum 硬件线程数(十进制)
PC=addr 指令的虚拟地址(以 0x 开头的十六进制)
格式:bin
1 byte | PC_TRACE_MIN_ID = 0x26 |
8 bytes | 循环数 |
1 byte | 硬件线程数 |
4 bytes | 指令的虚拟地址 |
4.35 动态库加载事件
格式 :full
DLLD,CY=cyclenum,TH=tnum,ID=idnum,NAME=string,FSYMS=numsyms,DSYMS=numsyms
如下:
CY=cyclenum 循环数(十进制)
TH=tnum 硬件线程数(十进制)
ID=idnum 动态库 ID(十进制)。 其他动态库事件中使用的唯一 ID。
NAME=string 动态库文件名(双引号字符串)
FSYMS=numsyms 此库中的函数符号数(十进制)
DSYMS=numsyms 此库中的数据符号数(十进制)
格式:bin
1 byte | DYNAMIC_LIB_LOADED_ID = 0x27 |
8 bytes | 循环数 |
1 byte | 硬件线程数 |
4 bytes | 动态库 ID |
1 byte | 动态库文件名byte数 [N] |
N bytes | 动态库名(无空终止符) |
4 bytes | 函数符号数 |
4 bytes | 数据符号数 |
4.36 动态库函数符号加载事件
格式 :full
DLFSYM,CY=cyclenum,TH=tnum,ID=idnum,VA=addr,SZ=size,NAME=string
如下:
CY=cyclenum 循环数(十进制)
TH=tnum 硬件线程数(十进制)
ID=idnum“动态库加载”事件中的动态库 ID(十进制)
VA=addr 函数起始的虚拟地址(以 0x 开头的十六进制)
SZ=size 以byte为单位的函数大小(十进制)
NAME=string 函数名(双引号字符串)
格式:bin
1 byte | DYNAMIC_LIB_FUNC_SYMBOL_ID = 0x28 |
8 bytes | 循环数 |
1 byte | 硬件线程数 |
4 bytes | 动态库 ID |
4 bytes | 函数的虚拟地址 |
4 bytes | 函数大小(以byte为单位) |
1 byte | 函数名byte数 [N] v |
N bytes | 函数名(无空终止符) |
4.37 动态库数据符号加载事件
格式 :full
DLDSYM,CY=cyclenum,TH=tnum,ID=idnum,VA=addr,SZ=size,NAME=string
如下:
CY=cyclenum 循环数(十进制)
TH=tnum 硬件线程数(十进制)
ID=idnum “动态库加载”事件中的动态库 ID(十进制)
VA=addr 数据起始的虚拟地址(以 0x 开头的十六进制)
SZ=size 以byte为单位的数据大小(十进制)
NAME=string 数据名称(双引号字符串)
格式:bin
1 byte | DYNAMIC_LIB_DATA_SYMBOL_ID = 0x29 |
8 bytes | 循环数 |
1 byte | 硬件线程数 |
4 bytes | 动态库 ID |
4 bytes | 数据的虚拟地址 |
4 bytes | 数据大小(以byte为单位) |
1 byte | 数据名称byte数 [N] |
N bytes | 数据名称(无空终止符) |
4.38 动态库卸载事件
格式 :full
DLUNLD,CY=cyclenum,TH=tnum,ID=idnum
如下:
CY=cyclenum 循环数(十进制)
TH=tnum 硬件线程数(十进制)
ID=idnum “动态库加载”事件中的动态库 ID(十进制)
格式:bin
1 byte | DYNAMIC_LIB_UNLOADED_ID = 0x2A |
8 bytes | 循环数 |
1 byte | 硬件线程数 |
4 bytes | 动态库 ID |