我知道,LOCAL_CFLAGS是一個可選的編譯器標誌集,將在構建C源文件時傳遞。我的問題是這個標記的意思是「-mno-thumb」還是我在哪裏可以找到一個可用的LOCAL_CFLAGS列表和他們的對話。LOCAL_CFLAGS -mno-thumb是什麼意思?
預先感謝您!
我知道,LOCAL_CFLAGS是一個可選的編譯器標誌集,將在構建C源文件時傳遞。我的問題是這個標記的意思是「-mno-thumb」還是我在哪裏可以找到一個可用的LOCAL_CFLAGS列表和他們的對話。LOCAL_CFLAGS -mno-thumb是什麼意思?
預先感謝您!
LOCAL_CFLAGS
選項在Android.mk
文件中相當於通常用於編譯器的指定編譯選項的通常CFLAGS。
有噸這樣的選項,其中大多數文件可以找到例如this page from the GCC documentation上的各種鏈接。
至於-mno-thumb
選項,它禁用了大多數(最近)ARM處理器上可用的可選指令集的Thumb選項。這個指令集是一個比通常的ARM指令更慢(編輯:查看whobertoos的答案)指令集的限制,
更快的
,因此使用此標誌禁用它可確保與更多(主要是較舊的)處理器兼容,但可能會降低性能作爲對口。
mbrenon在他寫的幾乎所有內容中都是正確的。 但是,THUMB指令集比ARM指令集慢。它佔用較少的空間,但速度較慢。
那是怎麼回事。 與arm指令相比,每個拇指指令佔用一半的空間。這限制了每條指令的可用選項,例如參數,尋址模式等。這導致執行相同工作所需的更多指令,並且每條指令需要一個執行週期,因此減慢。 據估計,ARM模式下的程序速度要快30-40%,但THUMB模式下的程序佔用的空間要少30-40%。拇指是爲了記憶有限的系統而發明的。
拇指模式也會影響外部存儲器電源。
儘管在大多數情況下需要執行更多的指令,但可以在一個週期內提取兩條指令。這是我對這個問題的理解。如果這是完整的答案,我不是100%確定的。