Получение вывода asm-синтаксиса Intel из icc вместо стандартного синтаксиса AT & T? - PullRequest
3 голосов
/ 20 марта 2011

Я застрял в проблеме. Некоторое время я использовал gcc для компиляции / сборки своего кода на C и привык к чтению синтаксиса сборок Intel. Я использовал флаг -masm=intel при создании файлов сборки.

Тем не менее, в последнее время, в связи с миграцией компаний, они получили Intel ICC, утверждая, что это лучше. Так что теперь мне нужно использовать icc, но было странно, что он имеет синтаксис сборки по умолчанию как AT & T. Я пытался изменить его, но это не сработало, поэтому я обратился в службу поддержки Intel, и они тоже не знают, и каждый дал мне противоречивый ответ.

Есть ли способ интегрировать gcc и icc, чтобы я использовал компиляцию icc "превосходства", одновременно компилируя синтаксис intel с gcc?

Я использую Ubuntu и получил версию ICC 12.x

Ответы [ 2 ]

3 голосов
/ 20 марта 2011

Этот флаг?

   -use_msasm     Support  Microsoft  style  assembly  language  insertion
                  using MASM style syntax and, if requested, output assem-
                  bly in MASM format

https://web.archive.org/web/20120728043315/http://amath.colorado.edu/computing/software/man/icc.html

1 голос
/ 06 марта 2015

Кажется, что -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

use-msasm

Включает использование блоков и целых функций кода сборки в файле C или C ++.

Описание

Эта опция позволяет использовать блоки и целые функции кода сборки в файле C или C ++.

Это позволяет встроенному блоку сборки Microsoft * MASM-стиля не GNU * -встроенный блок стиля style.

Альтернативные опции

-fasm-blocks

Как видите, это просто псевдоним для -fasm-blocks.Более того, опция -use-asm устарела , хотя я не знаю судьбу -use-msasm

Ссылки

...