Про 64-битный код

Тема в разделе "WASM.X64", создана пользователем Adrax, 9 сен 2007.

  1. Adrax

    Adrax Алексей

    Публикаций:
    0
    Регистрация:
    14 окт 2006
    Сообщения:
    135
    Адрес:
    г. Курск
    Завсегдатаи этого форума! Программисты! Ответьте мне на давно волнующий меня вопрос: так тормозит ли 64-битный код?
    Помню, у Мыщъха читал статью про x86-64: там он сказал, что 64-битный код более громоздкий и тормозной, чем 32-битный... Логично так всё объяснил, что сомневаться - грех
    А потом нашёл в Сети и журналах обзоры: оказалось, что 64-битные версии прог обгоняют 32-битные
    Кому верить?
     
  2. Agent666

    Agent666 New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    98
    Кому угодно, только не Крису. По крайней мере та его статья - полный КГ/АМ.
    В частности он наврал по поводу отсутствия на x64 абсолютной адресации.
     
  3. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    на http://www.ixbt.com/cpu-archive.shtml#speccpu есть обзоры о производительности в x64
     
  4. Guest

    Guest Guest

    Публикаций:
    0
    В целом 64 бита обгоняют 32 из-за:
    1. Большего количества регистров.
    2. Передачей параметров наподобие fastcall.
    3. Большая разрядность регистров не всегда тормозит, а в местах без нее никак (об этом Крис кстати говорил).
    Все здесь зависит от задач, но есть еще один "+" у 64 битных процессоров = поддержка новых SIMD инструкций и прочих технологий, например оптимизации стэка на уровне процессора. Крис говорил про тормознутость архитектуры х64, а тесты проводят на процах и разумеется они имеют кучу технологий для оптимиации.
    32 бита могут обогнать 64 лишь из-за меньшего времени обработки 32-х разрядных команд и 32-х разрядной адресации памяти, на этом преимущества заканчиваются.
     
  5. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    вопрос по набору команд x64:
    реальные immediate64 из команд только mov использует?
     
  6. Guest

    Guest Guest

    Публикаций:
    0
    t00x
    Ага, других пока не встречал.
     
  7. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    16 64-x разрядных регистра однозначно РУЛЯТ, по сравнению с 8 32-х.
    в 32-х постоянно не хватает места хранить адреса.
     
  8. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    сами 64 битные опкоды-то ничего, хотя сплайсинг и пострадал, Ж чую - специально с ним боролись
    а вот тот формат функции что микрософт замутил в стандарт - не нравится
     
  9. letika

    letika New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    28
    z0mailbox
    Ты имеешь ввиду соглашение вызовов?
     
  10. Guest

    Guest Guest

    Публикаций:
    0
    что-то еще с movzx непонятки, например movzx reg64, mem32 не работает
     
  11. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    mem32 нет, mem8/mem16 есть
     
  12. Guest

    Guest Guest

    Публикаций:
    0
    вообще то есть но не в movzx :)
    Посмотрел синенькую книжечку, там movzx r64, r/m32 пирсутствует. Видимо все дело в fasm!
     
  13. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    opcode + ModRM + imm64 тоже не работает ;)

    P.S. кроме mov (см. #5)

    P.P.S подумал, может кто искать будет и не прочитает весь топик )
     
  14. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    где ???
    p. 735 Vol. 2A 3-693
     
  15. Guest

    Guest Guest

    Публикаций:
    0
    Вот:
     
  16. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    Если в ладах с инглишем, почитайте Confusing instruction. это интересно.
     
  17. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    не знаю, что и сказать...

    P.S. asmfan
    понятно
     
  18. Guest

    Guest Guest

    Публикаций:
    0
    asmfan
    А ну теперь понятно почему компилер Platform SDK x64 свободно использует rax непроверяя старшие 32 бита.
    Проверил кодекс:
    Код (Text):
    1.     mov   cx,  100h
    2.     mov   rax, 0FEDCBA0987654321h
    3.     movzx eax, cx
    4.     mov   [rax], cx
    в конце rax содержит 100h.
     
  19. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    im1111
    А в мануалах АМД только reg64/mem8-18. Да и в мануалах Intela (#253666, May 06).

    Глянул Aug 07 — то же самое. Где ты нашел тот скриншот?
     
  20. Guest

    Guest Guest

    Публикаций:
    0
    На сотик снял у себя дома.
    #253666 Nov 2006.