Среда: EWARM 5.50, контроллер SAM7
Привожу "кусок" cstarup.asm, полученный из дизассемблера C-SPY. Здесь инициализируются стеки для режимов,

Код
[font="Lucida Console"]
__handlerReset:
1        LDR     SP, =SFE(CSTACK)
2     0x100cd8: 0xe59fd028     LDR       sp, _?0 [0x100d08]     ; ABT_STACK$$Base
3        MSR     CPSR_c, #ARM_MODE_ABT | I_BIT | F_BIT        
4     0x100cdc: 0xe321f0d7     LDRD      pc, [r1, -r7]!
5        LDR     SP, =SFE(ABT_STACK)
6     0x100ce0: 0xe59fd024     LDR       sp, _?1 [0x100d0c]     ; ABT_STACK$$Limit
7        MSR     CPSR_c, #ARM_MODE_IRQ | I_BIT | F_BIT
8     0x100ce4: 0xe321f0d2     LDRD      pc, [r1, -r2]!
9        LDR     SP, =SFE(IRQ_STACK)
10    0x100ce8: 0xe59fd020     LDR       sp, _?2 [0x100d10]     ; IRQ_STACK$$Limit
11      MSR     CPSR_c, #ARM_MODE_ABT | I_BIT | F_BIT        
12   0x100cec: 0xe321f0d7     LDRD      pc, [r1, -r7]!
13      LDR     SP, =SFE(ABT_STACK)
14   0x100cf0: 0xe59fd014     LDR       sp, _?1 [0x100d0c]     ; ABT_STACK$$Limit
15      MSR     CPSR_c, #ARM_MODE_SYS | I_BIT | F_BIT                
16   0x100cf4: 0xe321f0df     LDRD      pc, [r1, -pc]!
17      LDR     SP, =SFE(CSTACK)
18   0x100cf8: 0xe59fd008     LDR       sp, _?0 [0x100d08]     ; ABT_STACK$$Base
19      BL      LowLevelInit
[/font]


Если рассмотреть сроку [1]. IAR преобразовал эту строчку (убрал оператор SFE и подставил адрес)
Код
1     LDR     SP, =SFE(CSTACK)

в строчку [2]
Код
2     0x100cd8: 0xe59fd028     LDR       sp, _?0 [0x100d08]     ; ABT_STACK$$Base

Пока все понятно.

Теперь рассмотрим строчку [3]
Код
3     MSR     CPSR_c, #ARM_MODE_ABT | I_BIT | F_BIT

IAR преобразовал ее в строку [4]
Код
4     0x100cdc: 0xe321f0d7     LDRD      pc, [r1, -r7]!

которая мне непонятна. Откуда взялась команда LDRD? Ее не должно быть в этой версии архитектуры ядра.

Воспользовавшись "ARM Arhitecture referene manual" разобрал код команды 0xe321f0d7. Получается правильная команда MSR, как и задумывалось.
Тогда перечитал "Assembler Reference Manual", главу "Assembler psevdo-instructions", но там не оказалось такой псевдо-инструкции.
Есть разные варианты LDR, но LDRD нет.

Что это может быть? Специфика C-SPY при отображении?