[mdk-re] gcc & -march

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


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

Одинаковый код, кстати, не получился ни в одном из случаев.	
-- 
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
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : test-arch.tar.bz2
Тип     : application/octet-stream
Размер  : 8009 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/community/attachments/20010520/90aebae4/attachment-0003.obj>


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