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?
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.
> 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 ;-)
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 ...
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.