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 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