ARM thumb2 - add r, pc, #imm

#5760701
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?
Angehängte Dateien:
Persönliche Seite #5760713
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: ...

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