我有一个关于 C 和大会合作的问题。我想编写一个程序,将表指针发送到汇编程序的函数,在这个函数中,表中填充了一些数据,接下来返回到 C 并将结果写入输出。
以下代码与 C 部分有关:
#include <stdio.h>
extern int oblicz(double,double, double, double, int, double *);//a signature of an exter assembly function
int oblicz(double,double, double, double, int, double *);// the last position is a pointer of my table
//(some code)
size =(int)k;
tab = (double *)malloc(sizeof(double)*(size+1)); // alocation of memory
if (oblicz(a,b,P,Q,size,tab)) //the function
{
for(i;i<size;i++)
printf ("a result on %d index is %.10g \n",i, tab[i] );
}
组装部分:
%define a qword [ebp+8]
%define b qword [ebp+16]
%define P qword [ebp+24]
%define Q qword [ebp+32]
%define sizet dword [ebp+40]
%define tab dword [ebp+44]// the table pointer
为了简化代码完成,我使用了下面的语法,其中我只设置了 tab[0]
;i omited setting frame etc.
xor ebx,ebx
mov ebx, tab
mov qword [ebx], 4
结果 C 是
a result on: 0 -is 1.669124542e-307 // it is always the same independently of value in this line : "mov qword [ebx], 4"
我会很感激任何可能有问题的建议