每个人。我已经完成了在ios模拟器上运行的skia。但无法在我的iphone上运行。它停在这里。
#if defined(__x86_64__) || defined(_WIN64)
/* All x86_64 machines have SSE2, so don't even bother checking. */
static inline bool hasSSE2() {
return true;
}
#else
#ifdef _MSC_VER
static inline void getcpuid(int info_type, int info[4]) {
__asm {
mov eax, [info_type]
cpuid
mov edi, [info]
mov [edi], eax
mov [edi+4], ebx
mov [edi+8], ecx
mov [edi+12], edx
}
}
#else
static inline void getcpuid(int info_type, int info[4]) {
// We save and restore ebx, so this code can be compatible with -fPIC
asm volatile (
"pushl %%ebx nt"
"cpuid nt"
"movl %%ebx, %1 nt"
"popl %%ebx nt"
: "=a"(info[0]), "=r"(info[1]), "=c"(info[2]), "=d"(info[3])
: "a"(info_type)
);
}
#endif
static inline bool hasSSE2() {
int cpu_info[4] = { 0 };
getcpuid(1, cpu_info);
return (cpu_info[3] & (1<<26)) != 0;
return true;
}
#endif
在getcpuid方法中,它表示"在asm中无效输出约束‘a’"。它怎么了??任何人
它破解的代码试图为arm芯片构建x86组件。不出所料,这在设备上不会起作用。它在模拟器上工作,因为模拟器运行在x86芯片上。a约束是一个x86约束,指示eax:edx(IIRC)中64位值的返回。
您需要使用适当的标志对其进行编译,以使其通过arm代码路径。
你读过这个吗?
https://sites.google.com/site/skiadocs/user-documentation/quick-start-guides/how-to-check-out-and-build-skia-on-ios