Arrays aus C in Assembler

Gast #232948
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?
Gast #232950
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 ;-)
Gast #232951
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 ...
Gast #232952
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.
Gast #232953
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

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