少なくともCompiler Explorer (13.0.1)の現在の最新バージョンでは、Clang や GCC と同じよう-masm=intel
に ICCで動作するようです。配列の例で合計を読み込んでみましたが、以下のアセンブリが生成されます
testFunction(int*, int):
xor eax, eax #2.11
test esi, esi #3.23
jle ..B1.18 # Prob 50% #3.23
movsxd rdx, esi #3.3
...
一方-use_msasm
、Steve-o の回答で like を指定してもまったく機能しません
Intelの公式マニュアルページには-use-msasm
、そうではないと書かれています-use_msasm
が、それも機能しません
-use-msasm
(i32、i32emのみ)
ただし、これは 2006 年の ICC 9.x のもので、かなり前のことであり、オプションは 9.x と 13.x の間のどこかで変更された可能性があります。
さらに詳しく調べてみると、少なくともICC 16.0以降では、このオプションはソース コード内のアセンブリ ブロックのみを対象としており、Intel 構文を出力するためのものではないことがわかりました。
C または C++ ファイル内のアセンブリ コードのブロックと関数全体を使用できるようにします。
説明
このオプションを使用すると、C または C++ ファイル内でアセンブリ コードのブロックと関数全体を使用できます。
GNU* スタイルのインライン アセンブリ ブロックではなく、Microsoft* MASM スタイルのインライン アセンブリ ブロックを使用できます。
代替オプション
-fasm-blocks
ご覧のとおり、単なるエイリアスです-fasm-blocks
。さらに、オプションの運命はわかりませんが、この-use-asm
オプションは廃止されました-use-msasm
参考文献