Forum: Mikrocontroller und Digitale Elektronik SRAM Inhalte vergleichen


von Rainer B. (guitero)


Lesenswert?

Hallo zusammen,

ich möchte zwei Inhalte im SRAM miteinander vergleichen.
Auf dem Anfang des einen Strings steht der y-Zeiger auf dem anderen der 
x-Zeiger. Bisher habe ich den Vergleich etwa so gemacht:
1
ld      temp, y+
2
ld      data, x+
3
cp      temp,data

Gibt es eine elegantere Möglichkeit des Vergleichs, ohne den SRAM Inhalt 
vorher in zwei verschiedene Register zu laden.

Gruß,

guitero

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das hängt von der Prozessorarchitektur ab, die Du geschickterweise nicht 
angegeben hast. Wenn der Prozessor Adressierungsarten bietet, bei denen 
ein oder beide Operanden Speicheradressen sein können, dann gehts, wenn 
nicht, dann nicht.

Man kann allerdings auch mit einem Register arbeiten:

- lade ersten Wert in Register
- subtrahiere zweiten Wert
- prüfe auf 0

von Rainer B. (guitero)


Lesenswert?

Hallo,

> das hängt von der Prozessorarchitektur ab, die Du geschickterweise nicht
> angegeben hast.

Sorry, ein AtMega162. Kann ja mal passieren.

Aber den Tipp mit dem Subtrahieren find ich schonmal gut.

Gruß,

guitero

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Rainer B. schrieb:
> Aber den Tipp mit dem Subtrahieren find ich schonmal gut.
Wobei der beim AVR nix bringt. Da du eh nicht direkt den Inhalt einer 
Speicherzelle als Operanden angeben kannst (es gehen nur Register oder 
Konstanten) musst du erstmal beide in ein Register laden. Und ein 
Compare ist effektiv eh eine Subtraktion, einzig ein cpse könnte hier 
nützlich sein, weil es Vergleich und Sprung bei ungleich zusammen 
ausführt. Aber kommt es echt auf den letzten Taktzyklus an?

von Rainer B. (guitero)


Lesenswert?

Hey,

> Aber kommt es echt auf den letzten Taktzyklus an?

Nee, kommt es nicht. Aber hätte ja sein können das soetwas möglich ist. 
Geht natürlich auch so ohne Probleme.

Danke für eure Beiträge.

Bis zum nächsten Mal!

guitero

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.