我有一个任务 - 计算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
}
}
答案 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