[C/Assembly] Problema di riferimento non definito

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Ryuj
Prode Principiante
Messaggi: 3
Iscrizione: mercoledì 8 giugno 2016, 17:47
Sesso: Maschile

[C/Assembly] Problema di riferimento non definito

Messaggio da Ryuj »

Allora vi posto il codice per il quale presento questo poblema:

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 $10
questo è per la compilazione

Codice: 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);
questa invece è la parte di codice che invoca il pezzo in assembly

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
questa è invece la parte di nasm, il problema che riscontro è che non riesce a vedere il file assembly, dandomi quindi un riferimento non definito in quelle due righe in ci viene invocata la procedura, sono sicuro sia un errore banale ma non riesco a venirne a capo non essendo molto familiare con questo tipo di linguaggio, qualcuno riesce a capire dove possa essere l'errore ??
ixamit
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 499
Iscrizione: giovedì 14 novembre 2013, 10:16

Re: [C/Assembly] Problema di riferimento non definito

Messaggio da ixamit »

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 $10
Sembra banale, ma non passi l'oggetto al linker.
Inoltre dovresti aggiungere la section .text nel codice assembly.
Ryuj
Prode Principiante
Messaggi: 3
Iscrizione: mercoledì 8 giugno 2016, 17:47
Sesso: Maschile

Re: [C/Assembly] Problema di riferimento non definito

Messaggio da Ryuj »

e come dovrei fare ?? qual è il giusto comando?
ixamit
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 499
Iscrizione: giovedì 14 novembre 2013, 10:16

Re: [C/Assembly] Problema di riferimento non definito

Messaggio da ixamit »

devi aggiungere getDifference_nasm.o che non stai passando al linker (via compiler driver)
Ryuj
Prode Principiante
Messaggi: 3
Iscrizione: mercoledì 8 giugno 2016, 17:47
Sesso: Maschile

Re: [C/Assembly] Problema di riferimento non definito

Messaggio da Ryuj »

grazie mille, ho risolto :)
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti