SiLabs C8051F930 - IAR Compiler - Problem beim Linken

OP #857419
Lesenswert?
• ▲
▼
Hi Leute,

ich versuche nun schon den ganzen Tage Assembler Code aus C aufzurufen.
Ich verwende einen C8051F930 Controller von SiLabs.

Assemblieren/Compilieren funktioniert fehlerlos, der Linker jedoch 
bringt mir immer folgende Warnung: "External function "loop" in module 
(file) has no global definition"

Hier mein Code:
1
        NAME loop
2

3
        PUBLIC loop
4

5
        RSEG RCODE
6

7
loop    jmp  loop
8

9
        END

"loop" möchte ich aus C folgendermaßen aufrufen:
1
extern void loop( void );
2

3
void main( void )
4
{
5
   loop();
6
}

Wie gesagt, compilieren und assemblieren funktioniert.
Nur woher kommt diese Linker-Warnung?

Ich hoffe jemand kann mir helfen. - Danke schonmal vorab!
OP #857699
Lesenswert?
• ▲
▼
@Gerd: Ich benutze weder Inline-assembler noch den SDCC, sondern den IAR 
Compiler.

Wie bzw. Wo soll ich die Funktion mit void loop(void); deklarieren? 
Diese Funktion ist in einem Assembler Modul und Assembler kennt kein 
void.

Ich habe mir jetzt mal die Beispiele von IAR angesehen, und da tritt die 
selbe Fehlermeldung auf. Allerdings wird in deren Beispielen mit
1
#pragma diag_suppress=w46

Die Warnung einfach unterdrückt :-)

Ich denke ich werde das jetzt auch einfach mal so machen (obwohl in 
meinen Augen sehr unschön).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren