Forum: Mikrocontroller und Digitale Elektronik Arrays aus C in Assembler


von Dominik Riebeling (Gast)


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?

von Rufus Τ. F. (rufus) Benutzerseite


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.

von Zotteljedi (Gast)


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 ;-)

von Dominik Riebeling (Gast)


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 ...

von Zotteljedi (Gast)


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.

von Dominik Riebeling (Gast)


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 ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.