Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我在汇编语法方面遇到了一些困难。在我的作业中,我们需要将一系列参数传递给 x87 浮点寄存器。其中一个参数是双精度数,我们应该将此双精度数用作数组。
我已经使用fldl 4(%esp)将它加载到堆栈中,但现在我的任务是访问它的数组元素。我知道并理解在 x86 中操作整数数组的语法,但我不明白如何在 x87 堆栈上访问数组的索引。
因为它是我的浮点堆栈上唯一的东西,所以我知道它可以在%st(0)找到
根据您的评论,您的函数有一个double*参数。因此4(%esp)是一个指向 double 的指针,即存储数组项的基地址,每个为 8 个字节。要访问第i- 个元素,请乘以i8 并将其添加到所述基地址。假设您可以像这样将该元素加载到 FPU 中i:eax
double*
4(%esp)
i
eax
movl 4(%esp), %edx # load array base fldl (%edx, %eax, 8) # load the array item whose index is in eax