Forum: Compiler & IDEs ARM thumb2 - add r, pc, #imm


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Vincent H. (vinci)


Angehängte Dateien:
  • add_t4 (24,5 KB, 112 Downloads)

Bewertung
0 lesenswert
nicht lesenswert
Grüß euch

Mir ist nach ziemlich mühseeliger Suche aufgefallen dass im thumb2 
instruction set ein "add immediate" zum Program Pounter vom aktuellen 
Alignment des selbigen abhängig ist.

Konkret geht es um das encoding T4. Ein Bild aus dem Architecture Manual 
hab ich angehängt.
1
    nop
2
    addw r6, pc, #6 @ pc = 0x8001a6e, r6 = 0x8001a76, pc-r6 = 0x8
3
    nop
4
    addw r6, pc, #6 @ pc = 0x8001a74, r6 = 0x8001a7e, pc-r6 = 0xA

Mach ich hier einen Blödsinn und der Befehl ist eigentlich 
"UNPREDICTABLE"? Wenn nein, woher stammt dieses komische Verhalten?

: Bearbeitet durch User
von Niklas G. (erlkoenig) Benutzerseite


Bewertung
2 lesenswert
nicht lesenswert
In deinem Screenshot steht doch sogar "if Rn == '1111' then SEE ADR;". 
Da PC=r15 ist, musst du dir also "ADR" ansehen. Und da steht:

result = if add then (Align(PC,4) + imm32) else (Align(PC,4) - imm32);

Man beachte das "Align"! Wenn du es mit "ADR" und einem Label machst 
sollte der Assembler es automatisch richtig machen:
1
adr r6, foo
2
3
4
foo: ...

von Vincent H. (vinci)


Bewertung
-1 lesenswert
nicht lesenswert
Kannst du mir bitte sagen wo genau das steht? Im .pdf gibts 
sinnvollerweise keine Links auf diesen Pseudo-Code und nach "ADR" 
suchen...

von Niklas G. (erlkoenig) Benutzerseite


Bewertung
2 lesenswert
nicht lesenswert
Vincent H. schrieb:
> Kannst du mir bitte sagen wo genau das steht?

Auf S. A7-199. Das Kapitel A7.7 hat für jede Instruktion ein 
Unterkapitel, und da gibt es auch eines namens "A7.7.7 ADR", und auf 
dessen zweiter Seite steht der Pseudocode.

von Vincent H. (vinci)


Bewertung
0 lesenswert
nicht lesenswert
Achso damit ist tatsächlich der Befehl gemeint und kein Pseudo-Code...
Danke!

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]
  • [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.