簡體   English   中英

如何處理:選定的處理器不支持`qadd16 r1,r1,r0'

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM