我在 Android 共享库中有以下说明:
MRC p15, 0, R3,c13,c0, 3
LDR R3, [R3,#4]
MOV R0, #0
STR R0, [R3,#0xC]
根据 ARM 文档:
读取或写入线程和进程 ID 寄存器对处理器状态或操作没有影响。这些寄存器提供操作系统支持并且必须由操作系统管理。
这很好,但是这个寄存器值在 Android 或 ARM Linux 中的实现是什么?
从代码中,它尝试将线程和进程 ID 寄存器值作为结构读取,并读取一些带有偏移量的字段4
。该字段是指向结构本身的指针,它写入0
具有偏移量的字段12
。
所以,寄存器值肯定不是pthread_t
,因为根据Android源代码,pthread_t
偏移量为4的字段是unsigned int
而不是指向任何结构的指针。
有谁知道我在哪里可以找到MRC c13::c0::3
Android ARM 中返回的结构的定义?