-4

我是 ARM 架构的初学者。我有一个关于汇编程序(ARM arch)的程序,我必须知道程序中的每个字符串是什么意思。这是什么意思?我找不到有关它的信息。请帮帮我。感谢你。

@ 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
4

1 回答 1

0

FMDRR将数据从两个 ARM1136 寄存器传输到 VFP11(顶点浮点)双精度寄存器。在这种情况下,它从寄存器 r0 和 r1 传输位,以在 VFP11 寄存器 d6 中形成双精度(double变量)值。

FDIV是浮点除法,末尾的“D”是“双”精度标志,因为您要除以双精度类型的两个值。在这种情况下d7 = d8 / d6

FADD是浮点加法,类似于前面的命令。在这种情况下d9 = d9 + d7

FLD是浮点加载,末尾的“S”是“单”精度标志,因为您传递的值是单个 CPU 字的长度。[sp, #4] 表示您正在加载存储在 sp 之后 4 个字的数据(例如,如果寄存器 sp 是第 100 个字,您将获得第 104 个字)。@int 是转换标志。在这种情况下s11 = [sp+4]

查看ARM 信息中心以获取更多参考。

于 2013-10-27T13:41:32.610 回答