mikrocontroller.net

Forum: Compiler & IDEs ARM7 Assembler LDRB


Autor: Rob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche hier gerade wenige Zeilen Assemblercode zu verstehen.
Dazu habe ich ein paar Fragen.

Kann mir jemand den Unterschied zwischen LDR und LDRB auf deutsch 
erklären?

Und soweit ich weiß, ist das Register IP (Instruction Pointer) 
eigentlich gleich dem PC (Program Counter) oder?

Nun verstehe ich nicht warum in einem Codeblock mal ip und zwei Zeilen 
weiter pc verwendet wird, gibt es da doch einen Unterschied?

Ich habe testhalber mal im Keil-Debugger versucht nachzuvollziehen was 
der folgene Befehl macht:

ldrb ip, [r0, #5]

aber so ganz ist mir das nicht klar geworden, hätte der Prozessor an 
dieser Stelle nicht irgendwohin springen müssen? Immerhin wird doch ein 
Wert im Instruction Pointer verändert??? Im Keil-Debugger springt er 
jedoch nur zum Befehl in der nächsten Zeile.
Kann mir einer erklären was dieser Befehl macht?

besten Dank

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rob schrieb:

> Kann mir jemand den Unterschied zwischen LDR und LDRB auf deutsch
> erklären?

Noch nicht ins ARM ARM, das ARM Reference Manual reingesehen?

LDR läd ein 32-Bit Wort.
LDRB läd ein 8-Bit Byte, mit 0 auf 32-Bit erweitert,

> Und soweit ich weiß, ist das Register IP (Instruction Pointer)
> eigentlich gleich dem PC (Program Counter) oder?

Böse Falle. Auf manchen Plattformen ja. Nicht bei ARM. Da ist IP ein 
Synonym für R12, vorgesehen für die Rolle "Intra-Procedure-call scratch 
register". Also ein völlig harmloses Register für temporäre Daten aller 
Art.

Autor: Rob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ahhh, vielen Dank! So macht das Ganze wieder einen Sinn.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.