gas で使う情報の一覧です。

詳細は、 devkitPro/devkitARM/info/as.info に載ってます。 info ファイル形式なので、cygwin 等で info コマンドを使って見た方が見やすいと思います。 テキストエディタで開いてもそれなりに読めます。

これは何のためのリスト?

コンパイル時に、-S オプション付きでコンパイルすると 出力ファイルの形式がアセンブリ言語で書かれたリストになりますが、 そのファイルの内容を読むときに、このページのリストが必要になります。

自作ゲームを高速化しようとしたときに、 C 言語のソースそのままでは最適化したい関数の情報がはっきりとは分からないので、 読んで分かるようにするために -S オプションを使います。

?になっているところは、まだ未確認なところです。 分かる人が居たら書き足してください。

ディレクティブ一覧

  • .align EXPRESSION [, EXPRESSION] バイト境界を調節します。
  • .arch NAME ?
  • .arm .code 32 と同じ作用をします。
  • .ascii "<string>" アセンブリ内に文字列をデータとして挿入します。
  • .asciz "<string>" .asciiと同じですが、文字列の後に0のバイトが付加されます
  • .balign <power_of_2> {,<fill_value> { , <max_padding>} } アドレスを<power_of_2>バイトにアラインします。アセンブラは、値<fill_value>または適切なデフォルトのバイトを付加してアラインを行います。<max_padding>より多いフィルバイトが必要な場合は、アライメントは行われません。
  • .bss ?
  • .byte <byte1> {, <byte2>}... アセンブリ内にバイト値のリストをデータとして挿入します。
  • .cantunwind ?
  • .code <number_of_bits> 命令のビット幅を設定します。Thumbには16、ARMには32を使用します。
  • .cpu NAME ?
  • .eabi_attribute TAG, VALUE ?
  • .else .ifおよび.endifと組み合わせて使用します。
  • .end アセンブリファイルの末尾をマークします。通常省略されます。
  • .endif 条件付きコンパイルのコードブロックを終了します。.if, .ifdef, .ifndefを参照してください。
  • .endm マクロ定義を終了します。.macroを参照してください。
  • .endr 繰り返しループを終了します。.reptと.irpを参照してください。
  • .equ <symbol_name>, <value> シンボルの値を設定します。
  • .err アセンブリをエラーで中止します。
  • .exitm マクロを途中で終了します。.macroを参照してください。
  • .file ?
  • .fnend 関数の終了位置を示します。
  • .fnstart 関数の開始位置を示します。
  • .force_thumb Thumb モードに強制します。
  • .fpu NAME ?
  • .global <symbol> シンボルの外部リンクを行います。
  • .handlerdata ?
  • .hword <short1> {, <short2>} ... アセンブリ内に16ビット値のリストをデータとして挿入します。
  • .if <logical_expression> コードのブロックを条件付にします。ブロックを終了するには.endifを使用します。.elseも参照してください。
  • .ifdef <symbol> symbolが定義されている場合は、コードのブロックをインクルードします。ブロックを終了するには.endifを使用します。
  • .ifndef symbolが定義されていない場合は、コードのブロックをインクルードします。ブロックを終了するには.endifを使用します。
  • .include "<file_name>" ソースファイルをインクルードします。
  • .irp <param> {, <val_1>} {,<val_2>}... コードのブロックを値リストの値について1回ずつ繰り返します。ブロックの終わりは.endrディレクティブでマークします。繰り返しコードブロック内では、関連する値リストの値の代わりに<param>を使用します。
  • .loc FILENO LINENO [COLUMN] [OPTIONS] デバッグ用の行番号を追加します。
  • .ltorg ?
  • .macro <name> {<arg_1>}{,<arg_2>}...{,<arg_k>} k個のパラメータを持つ<name>という名前のアセンブラマクロを定義します。 マクロの定義は.endmで終わる必要があります。 マクロから途中で抜ける場合は.exitmを使用します。 ダミーのマクロパラメータの前には¥を付ける必要があります。
  • .movsp REG [, #OFFSET] ?
  • .object_arch NAME ?
  • .pad #COUNT ?
  • .personality NAME ?
  • .personalityindex INDEX ?
  • .pool .ltorg の別名です。
  • .raw OFFSET, BYTE1, ... ?
  • .rept <number_of_times> コードのブロックを指定の回数繰り返します。ブロックを終了するには.endrを使用します。
  • <register_name> .req <register_name> レジスタに名前を付けます。acc .req r0のように使用します。
  • .save REGLIST ?
  • .section <section_name> {, "<flags>"} 新しいコードまたはデータセクションを開始します。 通常はコードセクションに.text、初期化されたデータセクションに.data、 初期化されていないデータセクションに.bssという名前を付けます。 これらにはデフォルトフラグがあり、リンカはこれらのデフォルト名を理解します。
  • .set <variable_name>, <variable_value> 変数の値を設定します。
  • .setfp FPREG, SPREG [, #OFFSET] ?
  • .size NAME , EXPRESSION NAME のサイズを EXPRESSION にバイト単位で指定します。
  • .space <number_of_bytes> {, <fill_byte>} 指定されたバイト数を予約します。これらのバイトは0、または指定されている場合は<fill_byte>でフィルされます。
  • .thumb .code 16 と同じ作用をします。
  • .thumb_func 次に続くコードが Thumb エンコードされた関数であることを示します。
  • .thumb_set ?
  • .type NAME , TYPE DESCRIPTION オブジェクトまたは関数のシンボル NAME のタイプを以下の 5 種類のいずれかの形式で指定します。
    .type <name> STT_<TYPE_IN_UPPER_CASE>
    .type <name>,#<type>
    .type <name>,@<type>
    .type <name>,%>type>
    .type <name>,"<type>"
  • .vsave VFP-REGLIST ?
  • .word <word1> {, <word2>} アセンブリ内に32ビットワード値のリストをデータとして挿入します。

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-10-27 (日) 17:45:18 (2408d)