SiLabs C8051F930 - IAR Compiler - Problem beim Linken

OP #857419
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 #857569
> loop:    jmp loop

Funktioniert genau so wenig.

Wie gesagt, Compilieren funktioniert ja. Nur der Linker warnt (kein 
Fehler - und Programm funktioniert auf den ersten Blick auch) mit: 
"External function "loop" in module (file) has no global definition"
OP #857699
@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

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.