есть сишная программа из кусков типа Код (Text): #ifndef ASM_SSE trans_col.r = mih_max(trans_col.r, trans); trans_col.g = mih_max(trans_col.g, trans); trans_col.b = mih_max(trans_col.b, trans); trans_col.a = mih_max(trans_col.a, trans); #else __asm { #ifdef SSE3 lddqu xmm0, trans_col #else movups xmm0, trans_col #endif movss xmm1, trans shufps xmm1, xmm1, 0 maxps xmm0, xmm1 movups trans_col, xmm0 } #endif // ASM_SSE ее пытались собрать с помощью VS2005 для х64 и получили облом при включении дефайна ASM_SSE... на http://www.microsoft.com/Rus/Msdn/Magazine/2006/05/pietrek_x64.mspx указано: Одна из частей моего Win32-кода, которую удалось перенести на платформу x64 лишь с большим трудом, - подставляемый (inline) ассемблерный код, не поддерживаемый Visual C++ для x64. Но не бойтесь, любители ассемблера. Существует 64-разрядный MASM (ML64.exe); его вместе с документацией можно получить через MSDN. ML64.exe и другие инструменты для x64 (в том числе CL.EXE и LINK.EXE) доступны из командной строки. Чтобы настроить нужные переменные окружения, достаточно запустить файл VCVARS64.BAT. есть где мануал или туториал как это делается ?
Сам же написал: По поводу компиляции в FAQ. А вообще, в 8й студии масмом можно компилить асм-сорцы достаточно просто, смотри справку.
и оно само выковыривает все асемблерные куски из сишного текста и собирает их х64 масмом с привязкой к сишным переменным и др ? вообщем самый главный вопрос - принципиальных проблем в сборке для х64 системы показаного примера асмовой программы нету ? т.е. компилятор и асемблер из vs2005 смогут переделать инструкции для 64битной адресации сами автоматически ? даже если есть че-нить типа mov eax, variable movups [eax], xmm0 lea edi, diff_norm movups xmm0, xyz_mask maskmovdqu xmm7, xmm0 т.е. косвенная адресация 32битными регистрами ?
ну эт неинтересно - сделать отдельную либ или длл для асемблирования асемблером и потом линковки я и сам могу, но это вместо инлайнов придется делать вызовы функций и следить за регистрами и др - тяжко и неудобно... в исходной программе неск десятков замен сишных функций на асемблерные и вручную все перековыривать тяжко... хотелось как в х32 битном с++ - тыкается build all и все собирается, причем и с помощью c++ от мелкософта и c++ от интела без каких-либо изменений исходного текста программы... может надо подождать и для х64 бит версии так же сделают ? или может надо поискать какой-нить др компилятор си уже так умеющий ? в принципе могу добавить варианты 64битной адресации типа Код (Text): #ifdef ASM_32BIT mov eax, variable movups [eax], xmm0 #endif #ifdef ASM_64BIT mov rax, variable movups [rax], xmm0 #endif так правильно ? попробую еще интеловский с++ 10 попробовать - там что-то про 64битность отличную от итаниума напечатано... в 9 не нашел...
нет, не сделают. Вникай в философию - асм платформо зависимый язык теперь любой код на асме выносится в отдельный модуль и пишелся отдельно под каждую платформу