GCCでRISCVの命令セットの指定してコンパイルする方法について

GCCでRISCVの命令セットの指定してコンパイルする方法を調べたので以下に記載する。 -mabiは付けないとなぜかコンパイル失敗してしまう。 ABIはApplication Binary Interfaceの略でバイナリ版のAPIらしいがこの辺りもそのうち調べていきたい。

参考: All Aboard, Part 1: The -march, -mabi, and -mtune arguments to RISC-V Compilers - SiFive

  1. bit幅の指定(32bit or 64bit)
    64bit: ARCH=-march=rv64i -mabi=lp64
    32bit: ARCH=-march=rv32i -mabi=ilp32

  2. 命令セット指定
    defaultでは整数命令のみで、
    上の-marchのiの後に以下をつけると各命令セットを追加できる 。
    m: Integer Multiplication and Division
    a: Atomic Instructions
    f: Single-Precision Floating-Point
    d: Double-Precision Floating-Point
    c: Compressed Instructions

今後確認したい点

  1. ABIの内容確認
  2. mabiを付けないとコンパイルエラーになること
  3. 自作命令追加時のコード生成方法(gccの再コンパイル必要かも)