Сборка ядра

Если честно, это очень огромные дебри, лучше туда не лезти. Литературу очень трудно найти, а если и находишь, то eng. Я в молодости так и не осилил.
Название ARCH_HWEIGHT_CFLAGS от Hamming weight function (весовая функция Хэмминга).
Вдобавок все это связано с быстрыми системными вызовами, popcnt, регистрами и прочей ерундой - без обид, но одному без помощи спеца эту тему очень трудно осилить.
Ну и что полегче — если заглянешь в файл Linux-xxxxx/arch/x86/Kconfig, то увидишь
config ARCH_HWEIGHT_CFLAGS
string
default "-fcall-saved-ecx -fcall-saved-edx" if X86_32
default "-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11" if X86_64

Поэтому тебе сказали правильно — все ставится по дефолту и лучше ничего не трогать.
Ошибки не исчезают с опытом - они просто умнеют
castanel
хотя параметры такие встречаются, что даже гугль не поможет
Не правильно, наверное, еще и гуглишь - попробуй -fcall-saved-reg (или -fcall-saved-регистр) — в крайнем случае попадешь на описание компилятора и узнаешь, хотя бы немного для чего это. Если не найдешь — пиши, дам перевод этой опции из компилятора — но, но, но — толку от этого определения мало — смысл уловить трудно.
Ошибки не исчезают с опытом - они просто умнеют
castanel, в xconfig'e он нередакутирумеый.
а ну ка, покажи, как ты его можешь подредактировать.
vasek
-fcall-saved-reg
на запрос fcall-saved выдало
http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Interoperation.html
http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html
Из описания сразу же понятно, что это эта функция сохраняет регистрыв неизменном виде( которые ты укажешь ) при вызове API. А надо это для совместимости компиляторов. Ибо кто-то может модифицировать те или иные регистры во время вызовов. И менять что-то там я не думаю что требуеться, Если добавишь "безопасный регистр", то система будет работать медленнее, и требовать больше памяти( стек скорее всего, но все же ).
Если уберешь "лишнее" не подумав, и не подготовив систему к этому, то встретишь kernel panic с вероятностью 99,(9) %
dartsergius, мне это все понятно- а если подумать, как знатоки на следствии, то половину можно понять и из названия. Но хотел, чтобы ТС сам дошел до этого - так лучше схватывается на будущее. И еще, я ему дал прямой намек на компилятор - привожу не совсем удачный перевод из описания к нему
-fcall-saved-reg
Обращается с регистром с именем 'reg' как с регистром, подходящим для распределения, который сохраняется функциями. Он может выделяться даже для временных переменных или обычных переменных, которые переживают вызов функции. Функции, откомпилированные с этой опцией, будут сохранять и восстанавливать регистр 'reg', если они его используют.
Использование этого флага для регистра, который имеет фиксированную роль в машинной модели исполнения такую, как указатель стека или указатель фрейма, порождает разрушительный результат.
Различные бедствия могут произойти от использования этого флага для регистров, в которых могут возвращаться значения функций.
Эта опция не имеет отрицательной формы, потому что она определяет выбор из трех альтернатив.

Мне не понятно другое
1. как это сказывается на быстродействии - пишут, что значительно.
2. причем здесь весовая функция Хэмминга.
Ошибки не исчезают с опытом - они просто умнеют
vasek
1. как это сказывается на быстродействии - пишут, что значительно.
Ты знаком с асмом? Если да, то поймешь.
1 У тебя есть некоторый набор функций. Допустим их 100 000.
Все они оперируют регистрами.
Указывая -fcall-saved мы показываем компилятору какие регистры можно использовать другим функциям совершенно свободно.
Таким образом у нас эти все 100 000 функций умеют работать например с ebx, edx, esp. Нам надо сохранить с стеке только 3 значения, чтобы перейти к другой функции. И недостатка памяти у нас не будет.
Если мы увеличим коилчество регистров до ebx, ecx, edx, esi, edi, eax. Количество памяти при увеличении стека вызово увеличивается в 2 раза( 6 регистра сохраняем против 3-х ). НО! В функции мы можем использовать в своих нуждах уже 6 регистров! что даст огромный прирост производительности, потому что нам ненадо будет лишний раз обращаться к памяти за переменной( пусть даже к кеш памяти). Ну и соответсвенно хоть малый оверклок уже будет заметен.
Но если у нас кончается память, то никто нам не поможет.
2. насчет весовой функции точно не скажу, но думаю связано с потреблением памяти. Ну и эту весовую функцию не изучал пока( неродивый студент, который только собирается восстановиться на матфак).
dartsergius
Таким образом у нас эти все 100 000 функций умеют работать например с ebx, edx, esp. Нам надо сохранить с стеке только 3 значения, чтобы перейти к другой функции. И недостатка памяти у нас не будет.
dartsergius, спасибо за ответ и пояснение. Но, похоже из-за моего возраста и отсталости (давно не занимаюсь всем этим), все это не очень строго укладывается в моей голове — ну не вижу я такого большого увеличения быстродействия на 32 битной системе (всего два регистра - "-fcall-saved-ecx -fcall-saved-edx") — вообщем не робщи на деда, такова уже видно моя участь.
Ну а тебе от чистого сердца желаю успешно восстановиться на матфак.
Ошибки не исчезают с опытом - они просто умнеют
Perfect_Gentleman
а ну ка, покажи, как ты его можешь подредактировать.
когда на параметр пару раз щёлкаешь, внизу появляется строка редактирования.
Не знаешь, что делать, делай шаг вперёд!..
скрины покажи: до и после
 
Зарегистрироваться или войдите чтобы оставить сообщение.