[mdk-re] gcc & -march

Alexander Bokovoy =?iso-8859-1?q?ab_=CE=C1_avilink=2Enet?=
Вс Май 20 15:30:01 MSD 2001


On Sun, May 20, 2001 at 02:19:55PM +0300, Alexander Bokovoy wrote:
> On Sun, May 20, 2001 at 02:50:38PM +0400, Yura Zotov wrote:
> > On Sun, May 20, 2001 at 01:23:46PM +0300, Alexander Bokovoy wrote:
> > > On Sun, May 20, 2001 at 01:54:07AM +0400, Баталов Григорий wrote:
> > > > On Sun, 20 May 2001 01:17:18 +0400
> > > > Yura Zotov <yznews на hotbox.ru> wrote:
> > > > 
> > > > > Скажите, пожалуйста, а как gcc узнает, под какую архитектуру делать
> > > > > объектники, если не задан явно параметр -march? Под какой процессор он при
> > > > > этом генерит код?
> > > > 
> > > >   Неужели под ту, которая в $HOSTTYPE? :)
> > > Нет. Если не указана явно архитектура, то на ia32 генерируется код,
> > > который гарантированно будет работать с i386. Даже если Вы укажете
> > > -mcpu=i686, но не укажете -march=i686, то все равно код сгенерируется
> > > только такой, который можно выполнить на i386, хотя вызовы и распределение
> > > переменных по регистрам будут оптимизированы под i686.
> > > 
> > > Аналогично и для других архитектур -- по умолчанию код генерируется так,
> > > чтобы работать на самой слабой машине в серии.
> > 
> > Я тут взял и попробовал скомпилировать ОЧЕНЬ простую программу для разных
> > -march=i386|i486|i586|i686|athlon и без явного указания -march. Получилось
> > 6 *.o по ~1.3K, причем 5 из них были по размеру одинаковы и при беглом взгляде
> > внутрь тоже. Отличался от всех только полученный с -march=i386.
> > В чем прикол?
> Попробуйте приложенный тест -- это реализация алгоритма MD5, достаточно
> затратная с точки зрения вычислений. В архиве есть уже скомпилированные
> ассемблерные фрагменты и исходный md5.c. Получить ассемблерный код для
> конкретной архитектуры можно, пользуясь скриптом maketest.
> 
> Обратите внимание, например, на md5-i386.s и md5-pentiumpro.s. Проще всего
> сравнить через diff -u md5-i386.s md5-pentiumpro.s
> 
> Одинаковый код, кстати, не получился ни в одном из случаев.	
... кроме случая i686 и pentiumpro :-) поскольку это одно и тоже
Чтобы усилить эффект, добавьте в maketest оптимизацию -O6.

-- 
Sincerely yours, Alexander Bokovoy 
  The Midgard Project    | ALT  Linux  Team | Minsk Linux Users Group
 www.midgard-project.org | www.altlinux.ru  |    www.minsk-lug.net 
-- You won't skid if you stay in a rut.
		-- Frank Hubbard




Подробная информация о списке рассылки community