4

私は、thumb2 (T32) 命令を 1 つ含む単純なアセンブリ ファイル (temp.S) を持っています。例: orr R4,R7,R8 linaro
アセンブラでアセンブルしたいのですが、適切なフラグが見つかりません。

私が試してみると:

arm-linux-gnueabihf-as -o temp.o temp.S  

次に、命令の A32 バージョンのアセンブリを取得します

ただし、試してみると:

arm-linux-gnueabihf-as -o temp.o -mthumb temp.S  

エラーメッセージが表示されます

>  temp.S: Assembler messages:  
>  temp.S:1: Error: lo register required -- `orr R4,R7,R8  

あたかも T16 命令を期待しているかのように。

T32 命令の正しいフラグに関するヘルプをいただければ幸いです。

ちなみに、私のアセンブラのバージョンは次のとおりです。

4

1 に答える 1

3

Ubuntu wikiからの引用:

歴史的な理由からas、コマンド ライン オプションはサポート-mthumbされていますが、希望どおりにはなりません。これにより、独自の互換性のない構文を持つ古い Thumb-1 が有効になります。Thumb-2 コードを生成するには、統一されたアセンブラー構文をオンにする必要があります。これは.syntax unified、アセンブラー ソース内のディレクティブを使用してのみ行うことができます。すべてを 1 か所にまとめて混乱を避けるには、コマンド ラインで制御するよりも、ディレクティブを使用してアセンブラーの出力モードを制御することをお勧めします。


TL;DR、これをアセンブリファイルに入れます:

.syntax unified /* use unified assembler syntax */
.code 16        /* assemble in Thumb-2  (.thumb" can also be used) */
于 2014-07-28T16:00:21.287 に答える