ARM7 Assembler LDRB

Gast #1914625
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
#1914663
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.

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