0
:컴파일 전보 내가 Cygwin에서와 NDK와 전보 소스 코드를 컴파일 할 때이 오류 얻을 소스 코드 오류
D:/TMessagesProj/jni/./libyuv/source/row_gcc.cc: In function 'void libyuv::I422AlphaToARGBRow_SSSE3(const uint8*, const uint8*, const uint8*, const uint8*, uint8*, const libyuv::YuvConstants*, int)':
D:/TMessagesProj/jni/./libyuv/source/row_gcc.cc:1803:4: error: 'asm' operand has impossible constraints
);
^
make: *** [D:/TMessagesProj/obj/local/x86/objs/tmessages.22/./libyuv/source/row_gcc.o] Error 1
그리고
편집 : Google 드라이브 파일에서 가져온 코드 :
void OMITFP I422AlphaToARGBRow_SSSE3(const uint8* y_buf,
const uint8* u_buf,
const uint8* v_buf,
const uint8* a_buf,
uint8* dst_argb,
const struct YuvConstants* yuvconstants,
int width) {
asm volatile (
YUVTORGB_SETUP(yuvconstants)
"sub %[u_buf],%[v_buf] \n"
LABELALIGN
"1: \n"
READYUVA422
YUVTORGB(yuvconstants)
STOREARGB
"subl $0x8,%[width] \n"
"jg 1b \n"
: [y_buf]"+r"(y_buf), // %[y_buf]
[u_buf]"+r"(u_buf), // %[u_buf]
[v_buf]"+r"(v_buf), // %[v_buf]
[a_buf]"+r"(a_buf), // %[a_buf]
[dst_argb]"+r"(dst_argb), // %[dst_argb]
#if defined(__i386__) && defined(__pic__)
[width]"+m"(width) // %[width]
#else
[width]"+rm"(width) // %[width]
#endif
: [yuvconstants]"r"(yuvconstants) // %[yuvconstants]
: "memory", "cc", NACL_R14 YUVTORGB_REGS
"xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5"
);
}
추측 해 보면,이 코드는 64 비트 용으로 컴파일하려는 것이며 32 비트를 컴파일 중입니다. 32 비트는 64 비트보다 적은 레지스터를 가지고 있으며, 당신은 다 떨어지고 있습니다. –