2016-11-29 30 views
0

Я пытаюсь разобрать и изменить код для руки. Демонтажные показывает некоторые инструкции с инструкцией по ширине спецификаторов, например:Спецификации ширины инструкции руки не могут быть скомпилированы

80002be: f44f 5360 mov.w r3, #14336 ; 0x3800 
80002c2: f2c4 0302 movt r3, #16386 ; 0x4002 
80002c6: f44f 5260 mov.w r2, #14336 ; 0x3800 
80002ca: f2c4 0202 movt r2, #16386 ; 0x4002 

, но когда я пытаюсь изменить код и сборки, ассемблер не любит mov.w:

main.asm:5: Error: unexpected character `w' in type specifier 
main.asm:5: Error: bad instruction `mov.w r3,#14336' 

Я пытался указать - mcpu = cortex-m4 -march = armv7-m -mthumb, но это не поможет. Есть идеи?

+1

с gcc? Я немного знаю об ARM, но, возможно, это работает только в режиме «унифицированного» синтаксиса (по сравнению с отдельным синтаксисом большого пальца) –

ответ

3

Указатели ширины инструкций являются частью синтаксиса UAL. Похоже, вы используете сборщик GNU, который по умолчанию использует (довольно расслабленную интерпретацию) унаследованные отдельные синтаксисы ARM/Thumb, в зависимости от -marm/-mthumb или эквивалентных директив. Если вы хотите правильно использовать функции UAL, вам нужно сначала установить его с помощью директивы .syntax unified.

+0

Спасибо! это помогло –