Forum: Mikrocontroller und Digitale Elektronik Zugriff von asm auf c-array


von Oz z. (ozzy)


Lesenswert?

Moin,

ich muss in einer ISR (Atmega) etwas timig-kritisches berechnen, wo der 
c-compiler dran scheitert das in der Laufzeit hinzubekommen. Also 
schnell in asm programmiert, ist ja auch kein großes Problem und reicht 
dann sogar mit den Takten. Nun möchte ich aber auf ein c-Array 
zugreifen, was mir nicht gelingt. Wenn ich in der main.c z.B. stehen 
habe:
1
uint8_t array[]={0xFF,0x00}
und dann in der .s Datei:
1
.extern array
2
...
3
ldi ZL, lo8(array)
4
ldi ZH, hi8(array)
dann bekomme ich nur die Meldung
(.text+0x8): undefined reference to `array'

Wie greife ich denn sonst auf array zu?

Vielen Dank, Ozzy

von Ccc (Gast)


Lesenswert?

War da nicht was mit nem Unterstrich beim Variablennamen bei Asm?

von Klaus W. (mfgkw)


Lesenswert?

Wenn du den C-Teil kompilierst, kannst du mit nm bzw. avr-nm die 
erzeugten Namen ansehen. Die wiederum müssen dann so in asm genommen 
werden.

von Ralf (Gast)


Lesenswert?

Wenn das so deklariert ist, sollte es eigentlich keine Probleme geben.
Ich sehe hier zu meiner Herangehensweise nur einen Unterschied (hat 
vielleicht nichts damit zu tun): Ich hätte 'array' nur als Zeiger 
deklariert, also keine Initialisierung.

von Ralf (Gast)


Lesenswert?

... ich hab's mal ausprobiert. Funktioniert einwandfrei!

von Oz z. (ozzy)


Lesenswert?

Komisch; ich habe das jetzt noch mal aus dem Forum wieder zurückkopiert, 
und jetzt läuft es auch... Verstehe das wer will. Auf jeden Fall noch 
einmal vielen Dank für Eure Hilfe!!!

MfG, Ozzy

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.