2017-04-21 2 views
-2

Ich möchte die Etikettenadresse der Baugruppe in C-Sprache erhalten. Hier ist das Beispielerhalten Etikett Adresse der Baugruppe mit C

ich eine start.S Datei haben:

.fun: 
    // do something 

Und ich habe eine main.c Datei:

volatile unsigned int * p = (unsigned int *) 0x1000; 

Ich möchte das Label-Adresse 'Spaß' schreiben So in den Speicher von 0x1000, schreibe ich

*p = fun; 

Aber es kann nicht mit Fehlern info erstellt werden:

'fun' undeclared (first use in this function) 

Vielen Dank für Ihre Hilfe.

+2

Rename '.fun' zu' fun' und verwenden '.globl fun' in der Baugruppendatei auf das Symbol zu exportieren? Wenn das Ziel Windows ist und Sie ELF nicht verwenden, müssen Sie möglicherweise ein "_" (Unterstrich) dem Label "fun" in der Datei ".S" voranstellen. –

+1

Natürlich müsste man in _C_ auch ein 'extern' für' fun' deklarieren. –

+1

@MichaelPetch das '_' muss vorangestellt werden, wenn das Ziel 32 Bit ist. 64-Bit-Name Mangling verwendet nicht mindestens _ _ _ 'unter Windows. –

Antwort

0

extern Spaß;

* p = (unsigned int) &fun;

Verwandte Themen