如何在asm中查看并放入数组(x87)

时间:2012-11-03 16:12:51

标签: assembly x87

我有一个任务 - 计算6个函数的结果(Y =(20 * x)/(5 * x2 - 8,5))x - 从1开始,每个计算必须增加4(1,5, 9 ..)。

我写了一些代码,但我不明白如何制作循环并将数据放入数组。所有操作必须在asm - 循环并放入数组,1次迭代 - 数组中的1个元素

有我的代码:

int main()
{
float REZ[6];
int x = 1;
int A =5;
int B=20;
float C = 8.5;
int D =2000;
int increment = 4;
float part;
float val;

_asm{
finit   
fild x
fimul x
fimul A
fsub C
fstp part
fild D
fimul x
fdiv part
fstp val
}

}

1 个答案:

答案 0 :(得分:1)

我的集会时间早已不复存在,但我会尝试。通过定义标签并跳转到此标签来完成装配循环。根据循环,它是条件跳转(经过一些比较):

伪装配

label1:
    ...
    cmp x, 6
    jlt label1

查看X86 Assembly/Control Flow了解详情。

或无条件跳转:

label1:
    ...
    jmp label1

了解汇编的另一种方法是查看编译器输出。例如见:

int x, y;
for (x = 0; x < 6; ++x)
    y = (20 * x) / (5 * x2 – 8,5);

告诉gcc在程序集输出处停止:

  

gcc -S loop.c

并查找生成的loop.s