2013-10-27 297 views
-4

我是ARM架構的初學者。我有一個關於彙編程序(ARM arch)的程序,我必須指出程序中的每個字符串都是什麼意思。這是什麼意思?我找不到關於它的信息。請幫幫我。謝謝你。ARM彙編代碼

@ args = 0, pretend = 0, frame = 40 
@ frame_needed = 0, uses_anonymous_args = 0 
fstmfdd>sp!, {d8, d9} 
bl<>__aeabi_l2d 
it eq 
fmdrr<->d6, r0, r1 
fdivd<->d7, d8, d6 
faddd<->d9, d9, d7 
flds<-->s11, [sp, #4]<->@ int 
.word<->0 
+0

我希望我會在午餐後回答。無論如何,我會推薦Android架構的「Pro Android應用程序性能優化」一書(ARM - normal和Thumb模式和x86) – NitroNbg

+1

您的問題「這個程序的每一行是什麼意思?」? – mah

+0

請參閱[ARM體系結構參考手冊](http://morrow.ece.wisc.edu/ECE353/arm_reference/ddi0100e_arm_arm.pdf)和[ARM信息中心](http://infocenter.arm.com/help/index .JSP?主題=/com.arm.doc.ddi0274h/Chdgifab.html)。 – Michael

回答

0

FMDRR傳輸來自兩個ARM1136寄存器到VFP11(頂點浮點)雙精度寄存器數據。在這種情況下,它將來自寄存器r0和r1的位轉換爲VFP11寄存器d6中的雙精度(double變量)值。

FDIV是浮點除法,最後的「D」是「double」精度標誌,因爲您將兩個double類型的值相除。在這種情況下,d7 = d8/d6

FADD是浮點加法,與前面的命令類似。在這種情況下,d9 = d9 + d7

FLD是浮點加載,因爲您傳遞的值是單個CPU字的長度,所以最後的「S」是「單精度」標誌。 [sp,#4]意味着你要加載存儲在sp後4個字的數據(例如,如果寄存器sp是第100個字,你將得到第104個字)。 @int是轉換標誌。在這種情況下,s11 = [sp+4]

檢查ARM Information Center的其他參考。