Assembler PC relative branch (B)

Gast #3456843
Lesenswert?
• ▲
▼
Hallo

ich habe eine Frage zum program-relativen Branchen.

Dazu folgendes Szenario:

Ich möchte in Adresse 0xFFFF0000 einen Branch zur Adresse 0x00100000 
durchführen.

Leider ermöglicht der Assembler "B" Opcode keine solch große Reichweite 
(-4293853184 Bytes)

Ist es möglich einen Überlauf zu nutzen:
PC = 0xFFFF0000 + 0x00110000 = 0x00100000

Im Detail geht es um den SAM9G45 welcher es ermöglicht den gesamten SRAM 
als TCM zu konfigurieren.
Dadurch ist dieser leider nur über das TCM-Interface verfügbar uns steht 
nicht mehr als Remap-Zone zu Verfügung.
Problematisch ist dies für das Exception-Handling welches eine 
Exception-Vector-Tabelle an Addresse 0x00000000 erfordert.
Der CP15 ermöglicht es, die Exception-Vector-Tabelle von 0x00000000 - 
0x0000001C(innerhalb der remap-zone) nach 0xFFFF0000 - 0xFFFF001C zu 
verlagern.

Um dieses Feature nutzen zu können, muss ich die Vector-Tabelle mit 
Branches von 0xFFFF0000 zum ITCM (0x00100000) erstellen.

Gruß Tobias

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.