我通过runtime获取一个类的某个实例方法的imp即函数地址:
Method m = class_getInstanceMethod(NSClassFromString(@“xxxx”), @selector(hahaha));
IMP imp = method_getImplementation(m);
在ARM64下,这个IMP地址就正正好好指向函数的首地址。
但是在ARMv7下,这个IMP地址是函数的首地址加一,请问这个问题是为何呢?
我通过runtime获取一个类的某个实例方法的imp即函数地址:
Method m = class_getInstanceMethod(NSClassFromString(@“xxxx”), @selector(hahaha));
IMP imp = method_getImplementation(m);
在ARM64下,这个IMP地址就正正好好指向函数的首地址。
但是在ARMv7下,这个IMP地址是函数的首地址加一,请问这个问题是为何呢?
因为 目标函数是 thumb代码
请问能给点相关的资料吗?
没什么研究的 就是 arm 代码 地址是偶数 thumb代码是奇数 blx 跳转的时候根据目标地址奇偶,切换状态。所以所有模块之间函数调用 因为不知道目标代码是什么编译的,就都用blx,模块内的函数跳转你观察下 一般都是bl
了解,谢谢解惑,我去深入了解下。