2016-11-29 10 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構文の一部です。 -marm/-mthumbまたはそれに相当するディレクティブに応じて、従来の独立したARM/Thumbの構文をデフォルトで(むしろ緩やかに解釈する)GNUアセンブラを使用しているようです。 UAL機能を正しく使用するには、まず.syntax unifiedディレクティブで設定する必要があります。

+0

ありがとう!それは助けた –

関連する問題