Достала студия

Тема в разделе "LANGS.C", создана пользователем freeq, 9 май 2010.

  1. freeq

    freeq New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    47
    Всем спасибо за ответы!
    Решил проблему: #pragma optimize("", off) для ф-ции =)
     
  2. Z3N

    Z3N New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    812
    Может кто-нибудь знает, что VC подразумевает под SSE??? При включении данной опции проги постоянно вылетают с ошибкой "неправильная инструкция". SSE есть, это точно и я даже писал с помощью этих команд на асме.
    Насколько я помню инструкция типа cvt(p)*....

    У vc какой-то свой, особенный, взгляд на SSE?
     
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    SSE несколько "редакций"
     
  4. Z3N

    Z3N New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    812
    Весело. Раз уж заявлено SSE, то будьте добры учитывать все "редакции".
    А как с SSE у интелловского компилерра? Всё хочу скачать, да руки не доходят. Да и места знать надо откуда качать....
     
  5. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    А посмотреть, какую "не ту" инструкцию он вставил не судьба?
     
  6. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Когда уже будут примеры кода или хотя бы бинарник и опции компиляции?
    Если у тебя что-то не работает - 99.9999% что ошибка у тебя в коде или просто ты не понимаешь что делаешь.
     
  7. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    У студии есть опции /arch:SSE и /arch:SSE2
    Все cvt* - это SSE2, которого у тебя видимо просто нету.
     
  8. Z3N

    Z3N New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    812
    Я ставил SSE - это точно. Сегодня скомпилю CNQ специально, чтобы показывать ошибочную инструкцию.
     
  9. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    У студии всё в порядке с SSE, у меня множество приложения для data processing используют SSE, вплоть до новейших инструкций. В новой студии 2010 у компилятора С\С++ вообще есть поддержка AVX инструкций, хотя этих камней на рынке даже нет. :)

    У компилятора интел с SSE тоже порядок. У него правда побольше ума по части "оптимизации", но тут важно понимать, что ты пишешь и как это будет "видеть" компилятор. Скажем так, если подать ICC правильный с т.з. оптимизатора код, то он автовекторизует всё так, что в разы будет быстрее работать на новых процах.

    Я с таким сталкивался последний раз, когда реализовывал свёртку матрицы с ядром. Везде была включена поддержка SSE2. Если прощённо, результаты примерно такие.
    VS 2008 Vista x32:
    D:\R&D\conv>conv
    Size of data: 512 8192
    Size of kernel: 257
    Classic: 6906.86
    Effective cache: 4247.55
    Effective cache + OpenMP: 2126.3

    ICC 11.1 linux x32:
    Size of data: 512 8192
    Size of kernel: 257
    Classic: 4364.9
    Effective cache: 646.442
    Effective cache + OpenMP: 333.378

    Невероятно, но факт. :)
    Сборка для ICC шла под linux. Но существенно это ничего не меняет.
     
  10. Z3N

    Z3N New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    812
    0xc000001d - тип ошибки
    0x00493c5a - адрес ошибки

    Код (Text):
    1. CPU Disasm
    2. 1033:   tr.overbrightBits = Com_Clamp( 0, (glConfig.colorBits > 16) ? 2 : 1, r_overBrightBits->integer );
    3.  
    4. 00493C43  mov         ecx,dword ptr [r_overBrightBits (0BB7A84h)]  
    5. 00493C49  movd        xmm0,dword ptr [ecx+20h]  
    6. 00493C4E  xorps       xmm2,xmm2  
    7. 00493C51  xor         eax,eax  
    8. 00493C53  cmp         dword ptr ds:[0BBA710h],10h  
    9. 00493C5A  cvtdq2ps    xmm0,xmm0  <============================================(1)
    10. 00493C5D  setg        al  
    11. 00493C60  xorps       xmm1,xmm1  
    12. 00493C63  movss       dword ptr [esp],xmm0  
    13. 00493C68  inc         eax  
    14. 00493C69  comiss      xmm2,xmm0  
    15. 00493C6C  cvtsi2ss    xmm1,eax  
    16. 00493C70  movss       dword ptr [esp+4],xmm1  
    17. 00493C76  jbe         R_SetColorMappings+3Dh (493C7Dh)  
    18. 00493C78  movaps      xmm0,xmm2  
    19. 00493C7B  jmp         R_SetColorMappings+4Dh (493C8Dh)  
    20. 00493C7D  fld         dword ptr [esp+4]  
    21. 00493C81  fld         dword ptr [esp]  
    22. 00493C84  fcomip      st,st(1)  
    23. 00493C86  fstp        st(0)  
    24. 00493C88  jbe         R_SetColorMappings+4Dh (493C8Dh)  
    25. 00493C8A  movaps      xmm0,xmm1
    1) В опция стоит только SSE, но инструкция принадлежит SSE2. Как такое может быть???!!!

    Картинка с опциями и куском кода, где возникло исключение

    [​IMG]