2011-05-16 125 views
2

我正在嘗試使用NDK爲Android編譯一些給定的彙編程序文件(.S)。不幸的是我得到了同樣的錯誤的每一行:錯誤:錯誤指令使用NDK爲Android編譯彙編程序

提取代碼:

#define FLAG_C 70(%ebx) 

lsr_carry: 
    cmpb $32, %cl 
    jae lsr_carry_32 
    testb %cl, %cl 
    je lsr_carry_zero 
    shrl %cl, %eax 
    setc FLAG_C 
lsr_carry_zero: 
    ret 
lsr_carry_32: 
    jne ls_carry_33 
    shll $1, %eax 
    setc FLAG_C 
    xorl %eax, %eax 
    ret 
ls_carry_33: 
    xorl %eax, %eax 
    movb %al, FLAG_C 
    ret 

我覺得我還沒有明白彙編編程的基礎知識。有人可以幫助我嗎?

+0

3米x如果不知道請不要告訴做錯事! 將此行添加到Application.mk中: APP_ABI:= x86 並且您的代碼將針對x86平臺進行構建。 – udroidman 2017-03-10 12:18:50

回答

6

您正在嘗試編譯x86代碼。大多數Android設備在ARM上運行,公共NDK僅針對ARM進行編譯。

+0

是否有可能將其轉換爲ARM?或者兩者之間有很大的差異? – 3mx 2011-05-16 17:51:18

+0

不。他們只是完全不同的體系結構,具有不同的操作碼,寄存器,標誌,模式。 – EboMike 2011-05-16 17:55:44

2

它看起來像你試圖將x86程序集插入到Android?目前大多數Android設備都在使用ARM體系結構,這是一種完全不同的語言,具有完全不同的操作碼。

這且不說,我會建議不要在第一時間利用大會(當然,除非你有現成的,你想端口的代碼。)

+0

不完全正確。一些Google TV在x86上運行Android。 – 2011-05-16 18:03:48

+0

謝謝。編輯。 – EboMike 2011-05-16 18:04:48