0208774ワット発電中さん
2020/12/12(土) 20:26:14.08ID:vJi+gh0Lアセンブラソースファイルを含むプログラムを
ビルドできるか試してみました
結論から言うとMaixシリーズのArduinoではArduino IDEでビルドをしても
アセンブラソースファイルがアセンブルされないようでビルドに失敗しました
MaixシリーズのArduinoではPlatform IO IDEを使うと
アセンブラソースファイルを含むプログラムをビルドできます
アセンブラソースファイルはmain.cppと同じsrcフォルダに入れるだけでアセンブルされます
以下はPlatform IO IDEのArduino用のアセンブラデモプログラムです
以前の>>181、>>182のインラインアセンブラで書いたものを少し変更しただけのものです
関数の中の大部分をアセンブラで書く場合はその関数だけ別ソースファイルに分けて
関数全体をアセンブラで書いた方が場合によってはインラインアセンブラを使うよりも簡単かもしれません
Sipeed MaixシリーズのArduino用のRISC-V RV64IMAFCアセンブラ デモプログラム(単精度浮動小数点版)
Platform IOでArduinoのプロジェクトを作成して
main.cpp、asm_int32_float32.sをsrcフォルダに置いてビルドするだけです
main.cpp
https://pastebin.com/fdWr2QJp
asm_int32_float32.s
https://pastebin.com/nw4KyE8B
Sipeed MaixシリーズのArduino用のRISC-V RV64GCアセンブラ デモプログラム(倍精度浮動小数点版)
Platform IOでArduinoのプロジェクトを作成して
main.cpp、asm_int32_double.sをsrcフォルダに置いてビルドするだけです
main.cpp
https://pastebin.com/hRK8jmss
asm_int32_double.s
https://pastebin.com/4La0G7XY
注意:倍精度浮動小数点命令を使うプログラムをビルドする場合は
platformio.iniに下記オプションのいずれかを指定してください
デフォルトのオプションが-march=rv64imafcなので
倍精度浮動小数点命令を使うとエラーが出てビルドできません
build_unflags = -march=rv64imafc
build_flags = -mabi=lp64f -march=rv64gc
build_unflags = -Os -march=rv64imafc
build_flags = -O2 -mabi=lp64f -march=rv64gc
build_unflags = -Os -march=rv64imafc
build_flags = -O3 -mabi=lp64f -march=rv64gc