Auf Speicherstelle direkt zugreifen

Gast #2226291
Lesenswert?

Moin,

ich verwende den IAR Kickstart Compiler und benutzte einen NXP LPC 1768 
ARM Cortex M3. Für eine Zeitkritische aufgabe ist es nötig ein paar 
Zeilen in Assembler zu schreiben, um sie so effektiv wie möglich zu 
machen. Ich will eine bestimmte stelle im SRAM auslesen, um genau zu 
sein einen I/O PIN. Über das Bit-Banding ist der Pin auf die Addresse 
0x23E79068 gemapped. Jetzt meine Frage: Wie kann ich am schnellsten auf 
den Wert zugreifen. Ich hab mir
 das eigentlich ungefähr so vorgestellt:

LDR r0,[0x0x23E79068],

aber das wäre wohl zu einfach. Es funktioniert auf jeden Fall nicht.
Ich hoffe es kann mir jemand helfen.

mfg
Erik
Gast #2226302
Lesenswert?

sloti schrieb:
> Für eine Zeitkritische aufgabe ist es nötig ein paar
> Zeilen in Assembler zu schreiben, um sie so effektiv wie möglich zu
> machen.

Wenn du noch keine Erfahrung damit hast (so hört es sich für mich an), 
schlägt dich der Compiler sowieso.
Schreibs doch erstmal in Hochsprache und schau, obs reicht.
:-)
Gast #2226375
Lesenswert?

Hallo,

dann lass Dir das Programm zuerst einmal in Assembler zwischenübersetzen 
und sieh nach, ob diese Stelle wirklich noch optimierbar ist. Gerade bei 
einfachen Elementen ist die Wahrscheinlichkeit eher gering - vor allem, 
wenn man keine detaillierten Kenntnisse über die Abläufe innerhalb des 
Zielprozessors hat (wie z.B. mögliches Prefetching, Pipelining o.ä.).

Selbst ohne den ganzen Kram muss man dann noch zumindest wissen, welche 
Zugriffe am schnellsten ablaufen (so wie darmals John Carmac bei Doom 
float-Memory-Zugriffe für Integergrößen verwendet hat, da diese im 486 
schneller waren als die Integer-Zugriffe).

Bei einer Wette Amateur gegen Compiler würde ich definitiv auf Compiler 
setzen.

Schöne Grüße,
Martin

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