GCC & Nasm [ erledigt ]



  • Nachdem ich jetzt min. 6h heute damit verbracht habe FAQ, ASM Seiten und Google zu durchforsten, poste ich mal hier 😉 - hoffe es kann mir einer helfen.
    Die vorherigen Threads dazu haben mir leider auch nicht wirklich weiterhelfen können.

    Die C++ Files habe ich Compiled, soweit sogut.
    Das Nasm file wurde mit
    nasm -f elf xtime.asm -o ../bin/xtime_asm.o
    erstellt. Coff hat mir auch nichts geholfen - ok - ist ja auch Linux, da ist elf binary standard.
    Bis hierher hat auch alles super geklappt.

    Dann Linke ich mit
    gcc -o ../bin/DbgSuite ../bin/main.o ../bin/xtime_asm.o ... /* more binarys here */ -lefence

    Was passiert: undefined reference to 'CanRDTSC'

    Hier der Nasm Code

    BITS 32
    
    GLOBAL CanCPUID
    GLOBAL CanRDTSC
    
    SECTION .text
    
    CanCPUID
       ...
    
    CanRDTSC
    	call CanCPUID		; Check if CPUID is aviable
    	cmp eax, 1		; Check return value
    	je ok			; CPUID works
    	mov eax, 0 		; Set return value = false
    	ret
    
      ok:
    	mov eax, 01h		; Processor Info
    	CPUID			; Get Info
    
    	; Is RDTSC aviable?
    	shr edx, 4		;
    	and edx, 1		; check stepping
    
           mov edx, eax          ; Set return value
    	ret
    	 			; CanRDTSC
    

    Der dazugehörige C Code

    extern "C" { 
           extern int CanRDTSC(void);
    }
    
    ... blabla ...
    
    int res = CanRDTSC();
    ...
    

    Kann mir bitte einer sagen, wie ich das behebe?
    Danke
    Sven



  • Sorry Leute - hab wohl nur eine halbe Stunde Abstand gebraucht. Hätte vielleicht nicht 6h durch nach dem Fehler suchen sollen 😉

    Der Fehler ist erledigt



  • Verrätst du trotzdem was es war? *neugier*


Anmelden zum Antworten