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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.