Codice: Seleziona tutto
nasm -f elf32 -g getDifference_nasm.nasm -o getDifference_nasm.o
gcc -O0 -fopenmp -m32 -msse abod32.o abod32c.c cicleB.c cicleBF.c cicleC.c cicleCF.c myQuickSort.c getDistance.c getDifference.c methods.c getModule.c getProd.c -lm -o abod32c
./abod32c $1 $2 $3 $4 $5 $6 $7 $8 $9 $10Codice: Seleziona tutto
extern void getDifference_nasm(float *data, int I,int II,int d,float *xy);
typedef enum { false, true } boolean;
float cicleC (float *data,int n,int d,int a,int b,int op){
float tmp=0.0;
float omega=0.0;
float alfa=0.0;
float* AB=(float*) calloc(d,sizeof(float));
float* AC=(float*) calloc(d,sizeof(float));
boolean A=false;
boolean B=false;
getDifference_nasm(data,a,b,d,AB);
for(int i=0;i<n*d;i+=d){
for(int j=0;j<d && (A==false || B==false) ;j++){
if(data[i+j]!=data[a+j])
A=true;
if(data[i+j]!=data[b+j])
B=true;
}
if(A==true && B==true){
getDifference_nasm(data,a,i,d,AC);
omega=getOmega(AB,AC,d);Codice: Seleziona tutto
global getDifference_nasm
xy equ 24
d equ 20
II equ 16
I equ 12
data equ 8
getDifference_nasm:
push ebp
mov ebp,esp
pusha
mov ebx,[ebp+xy]
mov esi,[ebp+data]
mov ecx,[ebp+d]
mov eax,0
l:
mov edi,[ebp+II]
mov edx,esi
add edx,edi
add edx,eax
mov edx,[edx]
mov [ebx+eax*4],edx
mov edi,[ebp+I]
mov edx,esi
add edx,edi
add edx,eax
mov edx,[edx]
sub [ebx+eax*4],edx
add eax,4
loop l
popa
mov esp,ebp
pop ebp
ret