www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik R8C/NC30 externes SIZEOF?


Autor: Ratloser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

aus einem C-Programm möchte ich eine Assemblerroutine aufrufen.
Wie komme ich in der Assemblerroutine an die Grösse von arr1?

C:
extern void ARRMULT(void);
int arr1[]={10,20,30,40};
int arr2[]={45,35,25,15};
unsigned int arrsize=sizeof(arr1)/sizeof(int);
void main(void)
{
  ARRMULT();
}

Assembler:
      .GLB    _ARRMULT
      .GLB    _arr1
      .GLB    _arr2
      .GLB    _arrsize
      .SECTION  program
_ARRMULT:
      mov.w #0,r0    ; summe arr1[i]*arr2[i] fuer arrsize elemente
      mov.w #0,r1    ; summe in r2..r0
      mov.w #0,r2
      mov.w _arrsize,r3
      mov.w #_arr1,A0
      mov.w #_arr2,A1
      rmpa.w
      rts

Der Umweg über die Variable arrsize funktioniert zwar, ist aber unschön.
Die Renesasdokumentation zu Compiler und Assembler ist da auch nicht 
besonders hilfreich.

Ein
      mov.w # SIZEOF _arr1 , r3
wird mit:
Error (asp30): Section name is missing '_arr1' angemeckert.
Die diversen Sections hab ich auch schon mal durchprobiert.
Als Workaround tut ein:
      mov.w #(_arr2-_arr1)/2,r3

Jemand einen Rat? Der Linker müßte die Grösse ja eigentlich kennen.

Autor: Ratloser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gefunden :-)

      mov.w #.LEN{'arr1'},r3

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.