mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Arrays aus C in Assembler


Autor: Dominik Riebeling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich hab hier gerade ein Problem mit dem Analog Devices Compiler (kein
Mikrocontroller, deswegen wohl etwas OT): ich möchte in einer
Assembler-Datei auf Felder eines Arrays aus einer C-Datei zugreifen.
Bislang hab ich sowas nie gebraucht und leider schweigt sich das Manual
auch darüber aus wie es geht. Sieht also so aus:

foo.c:
int blah[10];

bar.asm:
.EXTERN blah;

leider kann ich jetzt in bar.asm nicht einfach auf blah[1] zugreifen.
Wie machen das denn andere Compiler / Assembler?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
blah[1] = blah + sizeof (int),


Angenommen, blah wäre 0x8000 und sizeof (int) auf Deinem System 2.

Dann ist blah[1] äquivalent zum Inhalt von 0x8002,
blah[2] = Inhalt von 0x8004

etc.

Autor: Zotteljedi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> blah[1] = blah + sizeof (int)

Rufus meint das übrigens nur als Pseudo-Code, in C würde das auf Grund
der Pointer-Arithmetik bereits auf blah[2] zeigen, sizeof(int) == 2
vorausgesetzt. Nicht daß das hier jemand falsch interpretiert und
meint, wieder was gelernt zu haben ;-)

Autor: Dominik Riebeling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also zumindest mir war klar wie das gemeint war ;-)
Hatte nur gehofft dass es ein "schöneres" Konstrukt gibt (aber das
bringt mich auch schon weiter). Auf structs lässt mich der Assembler
ganz nett mit _blah->member zugreifen. Keine Ahnung ob das ein
Standardverhalten ist ...

Autor: Zotteljedi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne den o.g. Assembler nicht, aber es ist in der Tat ein sehr
freundliches Verhalten, das habe ich bei anderen Assemblern nicht
gesehen. Hast Du mal in den Groups gegoogelt? Klingt für mich nach
einem nicht allzu exotischen Wunsch, sowas sucht man nicht als erster.

Autor: Dominik Riebeling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Google hat mir leider bei meiner Suche nicht wirklich weitergeholfen
(wobei ich mich erstmal auf Arrays in asm beschränkt habe) Der
Assembler / Compiler scheint was eigenes von Analog Devices zu sein --
jedenfalls sagt der (c) Analog Devices. Ich habe zwar schon mit
Mikrocontrollern mixed asm/c programmiert aber structs und arrays hab
ich da bisher nicht zwischen beiden "Welten" gebraucht.
Aber wenn das kein Standardverhalten ist wäre es wirklich interessant
da mal weiter zu suchen. Ist schon ziemlich angenehm ;-)

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.