Компиляция с -m32 -mtune = native на AMD64 - PullRequest
0 голосов
/ 20 февраля 2011

Является ли правильная оценка, что компиляция с -m32 и -mtune = native на машине AMD64 будет использовать 32-битные указатели и, следовательно, немного меньшие структуры данных, и, следовательно, более плотную упаковку кэша.Моему приложению (оно все еще находится на стадии разработки) не потребуется больше ГБ памяти, поэтому 32-разрядное адресное пространство должно быть в порядке.Я надеюсь использовать структуры данных с битовой усадкой для большего объема данных в кеше, а также возможность использовать больше регистров для целочисленной математики.Я пытаюсь достичь лучшего из обоих миров, больше регистров в силу -mtune = native, но меньших указателей в -m32.Будет ли доступ к дополнительным регистрам решаться в основном автоматически или мне придется иметь дело с sse явно?Я бы предпочел не.

Ответы [ 2 ]

1 голос
/ 20 февраля 2011

По крайней мере, если я понимаю, что вы хотите, я не думаю, что компилятор сделает эту работу за вас. Он собирался производить либо 32-битный, либо 64-битный код. С 64-битным кодом указатели будут 64-битными - если вы хотите 32-битные указатели, вам придется генерировать 32-битный код (с его соразмерными ограничениями, такими как регистры, которые он будет использовать) .

Чтобы получить то, что вы хотите, я почти уверен, что вам придется разделить указатель на себя: хранить (вероятно, 64-битный) базовый адрес, а внутри вашей структуры данных хранить смещения, а не полные адреса. Вам нужно будет самостоятельно добавить базу и смещение, прежде чем пытаться отменить ссылку.

0 голосов
/ 20 февраля 2011

Да, -m32 должен использовать 32-битные указатели.Вы можете подтвердить это, напечатав sizeof (int *).

Однако 64-битные приложения имеют больше регистров, доступных в наборе команд (в дополнение к их размеру), так что вы можете получить противоположный эффект.В зависимости от приложения, какой эффект (большие указатели по сравнению с большим количеством регистров) оказывает большее влияние, как правило, я бы предложил попробовать оба варианта и сравнить производительность.

...