Сообщение Re[3]: 32/64/AnyCPU - что за @$^%$? от 09.10.2016 17:03
Изменено 09.10.2016 17:37 Sinix
Здравствуйте, vsb, Вы писали:
vsb>Мне понятней не стало. Какая разница, какие там размеры указателей, это же деталь реализации. Какая разница, какой объём доступной памяти, это вообще от конкретной машины зависит, а не только от битности. В Java нет ничего этого, например. Какого размера указатели — знает только виртуальная машина. Сколько доступной памяти — вообще никто не знает, пока не попробуешь её выделить.
Ну раз нормальный вопрос — можно и ответить
1. Как упоминали выше по топику, этот волшебный переключатель влияет только на разрядность процесса, в котором будет запущен рантайм (чур не придираться к словам, сам знаю, что криво сформулировал)
2. При этом сам il-код не меняется и никто не запрещает поправить это флаг пересборкой exe-шника или ч/з corflags.exe.
3. Наконец, выставлять этот флаг для сборок-библиотек крайне не рекомендуется, т.к. оно приводит к крайне своеобразным квестам типа такого.
4. Собственно зачем: изначально этот флаг задумывался исключительно для утилит, которые тесно завязаны на unmanaged-код _и_ заточены либо под x86, или под x64. Особенно полезно, если interop-сборка под другую платформу отсутствует в принципе, т.е. использовать софт не под целевой платформой смысла ноль.
Но где-то к четвёртому дотнету внезапно вспомнили про "перфоманс это тоже важно". Надо сказать что версия jit-а под x64 в те времена не отличалась умом и сообразительностью, да и несколько бОльшее потребление памяти тоже делало своё чёрное дело... В общем "надо что-то делать" и это надо что-то делать делалось менеджерским способом: в VS 2010 x86 сделали платформой по умолчанию для exe-шников. Чтоб не скучали, в сконвертированных проектах в platform при этом иногда значилось AnyCPU (пруф). Больше всего радости это доставляло всяким числомолотилкам, т.к. иногда рантайм таки имеет значение
Движуха продолжилась в VS 2012. Следуя заветам Форда, AnyCPU теперь значило любой CPU из x86, конец списка. Ну и чтоб не нарушать традицию, и VS 2015 и VS 2013 иногда делают
Ну а чего вы хотели? 64-битная Windows — это очень просто!
vsb>Мне понятней не стало. Какая разница, какие там размеры указателей, это же деталь реализации. Какая разница, какой объём доступной памяти, это вообще от конкретной машины зависит, а не только от битности. В Java нет ничего этого, например. Какого размера указатели — знает только виртуальная машина. Сколько доступной памяти — вообще никто не знает, пока не попробуешь её выделить.
Ну раз нормальный вопрос — можно и ответить
1. Как упоминали выше по топику, этот волшебный переключатель влияет только на разрядность процесса, в котором будет запущен рантайм (чур не придираться к словам, сам знаю, что криво сформулировал)
2. При этом сам il-код не меняется и никто не запрещает поправить это флаг пересборкой exe-шника или ч/з corflags.exe.
3. Наконец, выставлять этот флаг для сборок-библиотек крайне не рекомендуется, т.к. оно приводит к крайне своеобразным квестам типа такого.
4. Собственно зачем: изначально этот флаг задумывался исключительно для утилит, которые тесно завязаны на unmanaged-код _и_ заточены либо под x86, или под x64. Особенно полезно, если interop-сборка под другую платформу отсутствует в принципе, т.е. использовать софт не под целевой платформой смысла ноль.
Но где-то к четвёртому дотнету внезапно вспомнили про "перфоманс это тоже важно". Надо сказать что версия jit-а под x64 в те времена не отличалась умом и сообразительностью, да и несколько бОльшее потребление памяти тоже делало своё чёрное дело... В общем "надо что-то делать" и это надо что-то делать делалось менеджерским способом: в VS 2010 x86 сделали платформой по умолчанию для exe-шников. Чтоб не скучали, в сконвертированных проектах в platform при этом иногда значилось AnyCPU (пруф). Больше всего радости это доставляло всяким числомолотилкам, т.к. иногда рантайм таки имеет значение
Автор: Sinix
Дата: 25.06.14
. Суровые мужики стали добавлять тест на "сколько бит у нас в указателе? А если проверю?".Дата: 25.06.14
Движуха продолжилась в VS 2012. Следуя заветам Форда, AnyCPU теперь значило любой CPU из x86, конец списка. Ну и чтоб не нарушать традицию, и VS 2015 и VS 2013 иногда делают
вот так | |
(с) ссылка выше. Пруф раз, мы на это тоже натыкались Автор: Sinix два, сюрпризы в комплекте три.Дата: 10.07.15 | |
Ну а чего вы хотели? 64-битная Windows — это очень просто!
Автор: Torie
Дата: 20.08.10
Дата: 20.08.10
Re[3]: 32/64/AnyCPU - что за @$^%$?
Здравствуйте, vsb, Вы писали:
vsb>Мне понятней не стало. Какая разница, какие там размеры указателей, это же деталь реализации. Какая разница, какой объём доступной памяти, это вообще от конкретной машины зависит, а не только от битности. В Java нет ничего этого, например. Какого размера указатели — знает только виртуальная машина. Сколько доступной памяти — вообще никто не знает, пока не попробуешь её выделить.
Ну раз нормальный вопрос — можно и ответить
1. Как упоминали выше по топику, этот волшебный переключатель влияет только на разрядность процесса, в котором будет запущен рантайм (чур не придираться к словам, сам знаю, что криво сформулировал)
2. При этом сам il-код не меняется и никто не запрещает поправить это флаг пересборкой exe-шника или ч/з corflags.exe.
3. Наконец, выставлять этот флаг для сборок-библиотек крайне не рекомендуется, т.к. оно приводит к крайне своеобразным квестам типа такого.
4. Собственно зачем: изначально этот флаг задумывался исключительно для утилит, которые тесно завязаны на unmanaged-код _и_ заточены либо под x86, или под x64. Особенно полезно, если interop-сборка под другую платформу отсутствует в принципе, т.е. использовать софт не под целевой платформой смысла ноль.
Но где-то к четвёртому дотнету внезапно вспомнили про "перфоманс это тоже важно". Надо сказать что версия jit-а под x64 в те времена не отличалась умом и сообразительностью, да и несколько бОльшее потребление памяти тоже делало своё чёрное дело... В общем "надо что-то делать" и это надо что-то делать делалось менеджерским способом: в VS 2010 x86 сделали платформой по умолчанию для exe-шников. Чтоб не скучали, в сконвертированных проектах в platform при этом иногда значилось AnyCPU (пруф). Больше всего радости это доставляло всяким числомолотилкам, т.к. иногда рантайм таки имеет значение
Движуха продолжилась в VS 2012. Следуя заветам Форда, AnyCPU теперь значило любой CPU из x86, конец списка. Ну и чтоб не нарушать традицию, и VS 2015 и VS 2013 иногда делают
Ну а чего вы хотели? 64-битная Windows — это очень просто!
vsb>Мне понятней не стало. Какая разница, какие там размеры указателей, это же деталь реализации. Какая разница, какой объём доступной памяти, это вообще от конкретной машины зависит, а не только от битности. В Java нет ничего этого, например. Какого размера указатели — знает только виртуальная машина. Сколько доступной памяти — вообще никто не знает, пока не попробуешь её выделить.
Ну раз нормальный вопрос — можно и ответить
1. Как упоминали выше по топику, этот волшебный переключатель влияет только на разрядность процесса, в котором будет запущен рантайм (чур не придираться к словам, сам знаю, что криво сформулировал)
2. При этом сам il-код не меняется и никто не запрещает поправить это флаг пересборкой exe-шника или ч/з corflags.exe.
3. Наконец, выставлять этот флаг для сборок-библиотек крайне не рекомендуется, т.к. оно приводит к крайне своеобразным квестам типа такого.
4. Собственно зачем: изначально этот флаг задумывался исключительно для утилит, которые тесно завязаны на unmanaged-код _и_ заточены либо под x86, или под x64. Особенно полезно, если interop-сборка под другую платформу отсутствует в принципе, т.е. использовать софт не под целевой платформой смысла ноль.
Но где-то к четвёртому дотнету внезапно вспомнили про "перфоманс это тоже важно". Надо сказать что версия jit-а под x64 в те времена не отличалась умом и сообразительностью, да и несколько бОльшее потребление памяти тоже делало своё чёрное дело... В общем "надо что-то делать" и это надо что-то делать делалось менеджерским способом: в VS 2010 x86 сделали платформой по умолчанию для exe-шников. Чтоб не скучали, в сконвертированных проектах в platform при этом иногда значилось AnyCPU (пруф). Больше всего радости это доставляло всяким числомолотилкам, т.к. иногда рантайм таки имеет значение
Автор: Sinix
Дата: 25.06.14
. Суровые мужики стали добавлять тест на "сколько бит у нас в указателе? А если проверю?".Дата: 25.06.14
Движуха продолжилась в VS 2012. Следуя заветам Форда, AnyCPU теперь значило любой CPU из x86, конец списка. Ну и чтоб не нарушать традицию, и VS 2015 и VS 2013 иногда делают
вот так | |
(с) ссылка выше. Пруф раз, мы на это тоже натыкались Автор: Sinix два, сюрпризы в комплекте три.Дата: 10.07.15 | |
Ну а чего вы хотели? 64-битная Windows — это очень просто!
Автор: Torie
Дата: 20.08.10
Дата: 20.08.10