1

我在汇编语法方面遇到了一些困难。在我的作业中,我们需要将一系列参数传递给 x87 浮点寄存器。其中一个参数是双精度数,我们应该将此双精度数用作数组。

我已经使用fldl 4(%esp)将它加载到堆栈中,但现在我的任务是访问它的数组元素。我知道并理解在 x86 中操作整数数组的语法,但我不明白如何在 x87 堆栈上访问数组的索引。

因为它是我的浮点堆栈上唯一的东西,所以我知道它可以在%st(0)找到

4

1 回答 1

1

根据您的评论,您的函数有一个double*参数。因此4(%esp)是一个指向 double 的指针,即存储数组项的基地址,每个为 8 个字节。要访问第i- 个元素,请乘以i8 并将其添加到所述基地址。假设您可以像这样将该元素加载到 FPU 中ieax

movl 4(%esp), %edx   # load array base
fldl (%edx, %eax, 8) # load the array item whose index is in eax
于 2014-03-25T00:34:29.730 回答