[英]How to deal with this : selected processor does not support `qadd16 r1,r1,r0'
我正在開發android應用程序,並且我正在開發NDK。 在編譯文件時,我得到所選處理器的錯誤, 不支持`qadd16 r1,r1,r0' 。 誰能解釋這個錯誤的原因和發生地點以及如何處理此錯誤? 這是我的basic_op.h文件的代碼片段
static inline Word32 L_add(register Word32 ra, register Word32 rb)
{
Word32 out;
__asm__("qadd %0, %1, %2"
: "=r"(out)
: "r"(ra), "r"(rb));
return (out);
}
提前致謝
發生這種情況是因為目標體系結構( http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0211h/Chddhfig.html )不支持QADD
指令。 要編譯此代碼,您需要在NDK中啟用arm-v7支持。
添加行
APP_ABI := armeabi-v7a
到您的Application.mk,此代碼將完美編譯:
static inline unsigned int L_add(register unsigned int ra, register unsigned int rb)
{
unsigned int out;
__asm__("qadd %0, %1, %2"
: "=r"(out)
: "r"(ra), "r"(rb));
return (out);
}
PS我正在使用Android NDK r8。
PPS為什么需要這種丑陋的裝配? 輸出程序集清單:
static inline unsigned int L_add(register unsigned int ra, register unsigned int rb)
{
return (ra > 0xFFFFFFFF - rb) ? 0xFFFFFFFF : ra + rb;
}
看起來仍然相當有效,並且更加便攜!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.