Некоторые тесты, чтобы увидеть, отличается ли код, сгенерированный для итерации с использованием указателей и от итерации с использованием индексации? - PullRequest
1 голос
/ 06 декабря 2011

Есть ли способ проверить, генерирует ли компилятор эквивалентный код для итерации с использованием указателей и итерации с использованием индексации ??? то есть для кодов

  void f1(char v[])
  {
       for(int i=0; v[i]!=0;i++) use(v[i]);
  }

и

 void f1(char v[])
  {
       for(char *p = v; *p!=0; p++) use(*p);
  }

Я использую Microsoft Visual C ++ в качестве моего компилятора ......

Пожалуйста, помогите .....

Ответы [ 2 ]

2 голосов
/ 06 декабря 2011
  1. Поместите точку останова в функцию.
  2. Убедитесь, что вы скомпилировали в Release (иначе она наверняка будет другой) с включенной отладочной информацией.
  3. Run.
  4. Откройте окно сборки, чтобы увидеть сгенерированную сборку (обычно Alt + 8).
1 голос
/ 06 декабря 2011

Я некоторое время не использовал Visual Studio, но я думаю, что должна быть возможность создавать файлы ассемблера, которые вы могли бы сравнить.

В противном случае вы можете иметь два файла C, по одному для каждой версиифункции, и создавать объектные файлы из них.Затем используйте дизассемблер, чтобы получить код ассемблера, и сравните два файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...