Завсегдатаи этого форума! Программисты! Ответьте мне на давно волнующий меня вопрос: так тормозит ли 64-битный код? Помню, у Мыщъха читал статью про x86-64: там он сказал, что 64-битный код более громоздкий и тормозной, чем 32-битный... Логично так всё объяснил, что сомневаться - грех А потом нашёл в Сети и журналах обзоры: оказалось, что 64-битные версии прог обгоняют 32-битные Кому верить?
Кому угодно, только не Крису. По крайней мере та его статья - полный КГ/АМ. В частности он наврал по поводу отсутствия на x64 абсолютной адресации.
В целом 64 бита обгоняют 32 из-за: 1. Большего количества регистров. 2. Передачей параметров наподобие fastcall. 3. Большая разрядность регистров не всегда тормозит, а в местах без нее никак (об этом Крис кстати говорил). Все здесь зависит от задач, но есть еще один "+" у 64 битных процессоров = поддержка новых SIMD инструкций и прочих технологий, например оптимизации стэка на уровне процессора. Крис говорил про тормознутость архитектуры х64, а тесты проводят на процах и разумеется они имеют кучу технологий для оптимиации. 32 бита могут обогнать 64 лишь из-за меньшего времени обработки 32-х разрядных команд и 32-х разрядной адресации памяти, на этом преимущества заканчиваются.
16 64-x разрядных регистра однозначно РУЛЯТ, по сравнению с 8 32-х. в 32-х постоянно не хватает места хранить адреса.
сами 64 битные опкоды-то ничего, хотя сплайсинг и пострадал, Ж чую - специально с ним боролись а вот тот формат функции что микрософт замутил в стандарт - не нравится
вообще то есть но не в movzx Посмотрел синенькую книжечку, там movzx r64, r/m32 пирсутствует. Видимо все дело в fasm!
opcode + ModRM + imm64 тоже не работает P.S. кроме mov (см. #5) P.P.S подумал, может кто искать будет и не прочитает весь топик )
asmfan А ну теперь понятно почему компилер Platform SDK x64 свободно использует rax непроверяя старшие 32 бита. Проверил кодекс: Код (Text): mov cx, 100h mov rax, 0FEDCBA0987654321h movzx eax, cx mov [rax], cx в конце rax содержит 100h.
im1111 А в мануалах АМД только reg64/mem8-18. Да и в мануалах Intela (#253666, May 06). Глянул Aug 07 — то же самое. Где ты нашел тот скриншот?