Кажется, что -masm=intel
работает в ICC точно так же, как Clang и GCC, по крайней мере в текущей последней версии в Compiler Explorer (13.0.1).Я попытался загрузить пример sum over array , и он генерирует следующую сборку
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
, как в ответе Стива-о, не работает вообще
Официальная справочная страница от Intel говорит, что это -use-msasm
, а не -use_msasm
, но это тоже не работает
-use-msasm
(i32,только i32em)
Поддержка вставки языка ассемблера в стиле Microsoft * с использованием синтаксиса стиля MASM и, если требуется, вывода сборки в формате MASM.
Примечание. Код встроенного ассемблера GNU (asm) и код встроенного ассемблера Microsoft (msasm) нельзя использовать вместе в одном модуле перевода.
Однако это для ICC 9.x в 2006 году, что было слишком давно, и вариант мог быть изменен где-то между 9.x и 13.x
Я вырыл немного дальше и понял, что по крайней мере с ICC 16.0 опция только для сборочных блоков в исходном коде, а не для выходныхing Синтаксис Intel
Включает использование блоков и целых функций кода сборки в файле C или C ++.
Описание
Эта опция позволяет использовать блоки и целые функции кода сборки в файле C или C ++.
Это позволяет встроенному блоку сборки Microsoft * MASM-стиля не GNU * -встроенный блок стиля style.
Альтернативные опции
-fasm-blocks
Как видите, это просто псевдоним для -fasm-blocks
.Более того, опция -use-asm
устарела , хотя я не знаю судьбу -use-msasm
Ссылки