2013-10-27 87 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的其他参考。