Renesas Synergy™

FAQ 106249 : as32Rのソースを、TW32Rのアセンブラ (m32r-elf-as) で利用するための変更点を教えてください。

Q: 質問

as32Rのソースを、TW32Rのアセンブラ (m32r-elf-as) で利用するための変更点を教えてください。


A: 回答

次の情報を参考にしてください。

M32R用クロスツール アセンブリ言語対応情報
as32R → TW32R(m32r-elf-as)
1999.7.23 Rev.C

([×] は、そのままの変換はできないことを示します。)

  1. 定数表現
    m32r-elf-asでは、C言語の定数表記で記述します。
    10進数   123456   → 123456   (変更不要)
    16進数   h'1234abcd   → 0x1234abcd   先頭を0xにする。
    8進数   q'123456   → 0123456   先頭を0にする。
    2進数   b'10101011   → 0b10101011   先頭を0bにする。
  2. ディスプレースメント
    2.1   分岐命令(8bit/24bit) 分岐命令にサイズ修飾子(.s または .l)を付けます。
            bra   label:8    →   bra.s   label
            bc    label:8    →   bc.s    label
            bl    label:8    →   bl.s    label
            bnc   label:8    →   bnc.s   label
            bra   label:24   →   bra.l   label
            bc    label:24   →   bc.l    label
            bl    label:24   →   bl.l    label
            bnc   label:24   →   bnc.l   label
    2.2   ldi命令(8bit/16bit) それぞれ、拡張ニモニック(ldi8 または ldi16)を使います。
            ldi   Rn, #const:8   →   ldi8   Rn, #const
            ldi   Rn, #const:16  →   ldi16  Rn, #const
  3. 擬似命令
    (擬似命令の詳細は、TW32R添付のオンラインマニュアルの「Assembler - as」 の中の「AssemblerDirectives」の章を参照ください。)

    3.1   セクション セクションのcode/data属性は、許可属性で表現します。
           code → "ax"    割り付け(a)、実行可能(x)
           data → "aw"    割り付け(a)、書込み可(w)
    また、align(アドレス整合)は、.balign擬似命令にして .sectionの直後の行に 書きます。 なお、locate=...によるセクションの絶対番地指定は、m32r-elf-asでは 等価な記述方法はありません。ldスクリプトでリンク時にアドレス指定を 行ってください。
         .section P,code,align=4  →  .section P,"ax"
                                      .balign 4
     
         .section D,data,align=4  →  .section D,"aw"
                                      .balign 4
     
         .section P,code,locate=h'1234  →  [×]
                                 ... ldスクリプトでリンク時にアドレス指定
    3.2   データ設定
         .data    →  .word
         .data.w  →  .word
         .data.h  →  .short または .hword
         .data.b  →  .byte
    3.3   文字列データ設定
         .sdata   →  .ascii
    ただし、<ASCIIコード> は、文字列中にC言語と同様のバックスラッシュ表記を 用いて記述してください。
    例)
         .sdata  "Hello, world"<10><0>   →   .ascii  "Hello, world\n\0"
    3.4   領域確保
         .res.b   →   .space
    サイズがバイト以外の場合は、数値を4倍、もしくは2倍してください。
         .res    45    →    .space  45*4
         .res.w  45    →    .space  45*4
         .res.h  45    →    .space  45*2
    3.5   シンボルの外部定義/参照
    定義/参照に関らず、.globalを使用してください。
    (最初から .global の場合は、変更の必要はありません。)
         .export  →  .global
         .import  →  .global
         .global  →  (そのまま)
    3.6   値シンボルの指定
    命令の名前(.equ)は同じですが、文法が異なります。
         symbol:  .equ  h'1234   →   .equ  symbol, 0x1234

 

適用製品

M32Rファミリ用クロスツールキット GNUツール版 [M3T-TW32R]
他にご質問がございましたら、リクエストを送信してください