Пытаюсь тут собрать в vs2010 в 64 бита код, который успешно собирался в vs2005. Не собирается, не находит некоторые SSE интринсики - те, что используют тип __m64 (пришедший из MMX'a еще). Заглядываю в MSDN, а там просто так пишут: "The __m64 data type is not supported on x64 processors". Как же оно у меня тогда работало столько лет? А просто там проект интеловским компилятором компилился, он прекрасно эти типы и интринсики понимает, и отлично они себе работают на x64. Просто в MSVC кто-то решил их не поддерживать, а чтобы не задавали лишних вопросов написали, что это процессоры виноваты. Молодцы, чо.
Page Summary
Style Credit
- Style: Neutral Good for Practicality by
Expand Cut Tags
No cut tags
no subject
Date: 2012-09-14 11:12 am (UTC)The __m64 stuff is hilarious. Initially MS were saying they won't support x87 and MMX in win64 - that is, they didn't want to save and restore the FPU registers when they switched threads. That didn't happen, but I guess the VC people heard about it and liked the idea, so they banned MMX intrinsics even though the OS is fine with them now.
А вот ошибки 64-битной арифметики в vc6 - это очень странно. Я там пользовался __int64, работало хорошо.
no subject
Date: 2012-09-14 11:25 am (UTC)vc6 например делаю так __int 64 a,b,c; c=a%b;
Работал я с каким-то хитрым полиномом и % неверный результат даёт.. % никому кроме меня не нужен был получается, вот и не проверял никто. Может в sp5 sp6 поправили, не знаю. А мне вобщем неприятно было. Вобщем дофига там ошибок помню было, самодельные int64 писал, чтобы считало нормально.. В современных студиях уже точно починили..
no subject
Date: 2012-09-14 11:47 am (UTC)