Измените и соберите файл .s

Можно ли изменить и собрать файл .s, который может быть сгенерирован компилятором Intel C? Я знаю, что это возможно с gcc через:

  1. gcc -S file.c
  2. изменить file.s
  3. as file.s -o file.o

Однако, если я попробую то же самое с icc от Intel, это приведет к нескольким ошибкам и предупреждениям. Что мне здесь не хватает? Спасибо.


person user1829358    schedule 19.12.2013    source источник
comment
Сначала сообщите нам, что вы изменяете?   -  person Chinna    schedule 19.12.2013
comment
Как указано в (2), я изменяю сгенерированный файл сборки. Допустим, я меняю порядок двух независимых инструкций.   -  person user1829358    schedule 19.12.2013
comment
В чем ошибка? Как мы можем знать, что было не так, не зная ошибки?   -  person phuclv    schedule 19.12.2013


Ответы (1)


Проблема с языком ассемблера заключается в том, что нет стандартного синтаксиса, самые популярные 2 синтаксиса, используемые для написания ассемблера, - это AT&T и Intel.

Угадайте, какой из них используется gcc по умолчанию, а какой — Intel.

Я также предлагаю использовать синтаксис Intel в gcc, чтобы вы могли использовать только один синтаксис.

Пример того, как сгенерировать asm с синтаксисом Intel, начиная с исходного кода в C

gcc -S -masm=intel source.c
person user2485710    schedule 19.12.2013
comment
Спасибо. Моя проблема заключалась в том, что я генерировал файл .s через: icc -S -c file.c -masm=intel. Однако второй шаг (т. е. (2) icc file.s -o file.o) не удался. Удаление -masm=intel из (1) решает эту проблему. Есть ли способ использовать icc для создания файла .s, который использует синтаксис Intel, и собрать этот файл .s в файл .o? - person user1829358; 19.12.2013