Vyacheslav
Потом просто инкрементить счётчик по выходу из repne
Dolphin
Этот пример можно соптимизировать с помощью repne scasd?
он сканирует до первого, то есть цикл все равно городить, счетчики считать и т.д. хотя будет и быстрее.
Eugene
Я думал про scasd, но не уверен, что это быстрее будет. Эти комплексные инструкции работают относительно медленно. Да и там тоже не всё так радужно. Нужно определять причину выхода из цикла. И тогда либо опять возвращаемся к тому же вопросу: xor ebx,ebx @@: repne scand setz bl add edx,ebx test ecx,ecx jnz @B Либо городим (и там всё равно встаёт эта тема): @@: repne scasd jecxz @F inc edx jmp @B @@: setz bl add edx,ebx
­
@osdever ну и куда ты?
K
Ребят, кто-нибудь знает чаты разработчиков компиляторов? Где-то видел такой, не могу найти.
JeisonWi
IRC://#gcc, #clang
K
IRC://#gcc, #clang
не, где-то в телеге видел... )
K
https://t.me/CompilerDev вот вроде оно, если кому интересно
K
если это посчитается рекламой, можете удалить, не знал
­
О, ещё боты...
­
Имперский флаг? Хитро!
електр🟢нік ✙🟠рчбеч ඞ
­
/ban
Group Butler [beta]
H͚̓ü̺n̪̬̟ͣho͎̥͆wͧ banned Daily!
­
Ух, сколько ботов набежало!
Dan
Корм админам :)
𝐦𝐚𝐤𝐟𝐥𝐨𝐲
Сессия
bilka00
Вероятней всего сессия...
Eugene
Сексия.
електр🟢нік ✙🟠рчбеч ඞ
Депрессия.
Eugene
Такой вопрос созрел. Сортировка. Обычно идёт сравнение и в случае, если значение меньше или равно (к примеру), прыгаем. Иначе обмен. Нужно сделать с использованием cmovсс (без jcc). Но прикол в том, что cmovсс не пишет в память, пишет только в регистр (из регистра или памяти). В итоге получается какая-то херня типа mov eax,[esi] mov edx,[edi] cmp eax,edx ; Меняем местами, если больше cmova ecx,eax cmova eax,edx cmova edx,ecx ; Пишем обратно mov [esi],eax mov [edi],edx Абсолютно беспонтовая затея (лишние доступы к памяти). У кого-нибудь есть идеи, как это можно сделать красиво, без такого уродства? Если использовать cmpxchg, будет не лучше (ну или не намного лучше).
Eugene
Не, в данном случае это точно не надо. Надо обойтись без SSE и AVX 🙂
Maksym
Шош вас так много
Co(n)stantine👨‍🔬
Все вдруг поняли, что в 2019 все же нужно знать asm, сложно без него
Kirill
Товарищ Столяров настаивает на том чтобы уважающие себя профессионалы обходились без парочки чародеев и волшебных палочек, если вы понимаете о чём я!)
Anonymous
Что это?
Это я к какому-то давнему вопросу о поиске простых чисел на разных ISA
Anonymous
Когда частота CPU падает
Anonymous
и процессор работает медленнее
Anonymous
должно компенсироваться толщиной регистров, в случае с AVX
Anonymous
Но код должен быть соответствующим
Eugene
В смысле, когда выполняется AVX, автоматом падает частота? 😯
Anonymous
Вроде бы как да
Anonymous
Но я не знаю, на всех ли CPU так
Anonymous
и на всех ли AVX
Anonymous
Но такое явление точно есть
Anonymous
т.е. код на SSE может оказаться быстрее из-за этого эффекта
Anonymous
https://arxiv.org/pdf/1901.04982.pdf
Anonymous
Тут про интел и про AVX2 и AVX512
Eugene
А если AVX1?
Eugene
И если в винде отключить управление частотой? Это поможет как-то?
Anonymous
По-моему, это чисто железячная специфика
Anonymous
т.е. не винда управляет
Anonymous
На уровне микрокода
Anonymous
А если AVX1?
Надо гуглить. Может и ничего страшного
Eugene
Если смотреть тайминги у А.Фога, к примеру, то в Skylake AVX работает быстро, до него — медленно.
Anonymous
Очень даже правдоподобно
Anonymous
Это как-то связано с отведением тепла. Толстые регистры разогревают процессор сильнее
Aiwan \ (•◡•) / _bot
Во флуд заходи
­
Закреп читай, а не закрывай.
Aiwan \ (•◡•) / _bot
Вопрос такой, что быстрей, тригонометрические функции через fpu или они же, но реализованных через алгоритмы целочисленной математики?
Aiwan \ (•◡•) / _bot
Где то слышал/читал через fpu около 600-800 тактов
електр🟢нік ✙🟠рчбеч ඞ
Где то слышал/читал через fpu около 600-800 тактов
не, максимум там 180 и это логарифмы и арктангенсы
електр🟢нік ✙🟠рчбеч ඞ
на современных
Aiwan \ (•◡•) / _bot
Где то слышал/читал через fpu около 600-800 тактов
Я смотрю с колокольни msdos того времени
електр🟢нік ✙🟠рчбеч ඞ
там и 1к+ было
Aiwan \ (•◡•) / _bot
Aiwan \ (•◡•) / _bot
#book masm + MSVS win32 лекции
Aiwan \ (•◡•) / _bot
Aiwan \ (•◡•) / _bot
#book АЛГОРИТМ ВЫЧИСЛЕНИЯ ФУНКЦИЙ SIN(X) И COS(X) ДЛЯ 16-РАЗРЯДНЫХ МИКРОКОНТРОЛЛЕРОВ
Eugene
На 8086 всё было очень печально. Сейчас FPU работают шустро, SSE — ещё шустрее. Я как-то алгоритм вычисления синуса через SSE (через ряды) сравнивал с fsin. Так вот, при грамотной реализации (в Delphi, в общем-то хорошо сделано, его и сравнивал) алгоритм работает быстрее, чем fsin.
Eugene
Я уже скидывал пару раз ссылку на доку по таймингам: xk8.ru/agnerinstbl Тут они хоть и экспериментальным путём получены, но спецом грамотным и по разным процессорам.
Eugene
Смотря как эмуляция реализована.
Aiwan \ (•◡•) / _bot
Для сравнения dosbox qemu bochs
Aiwan \ (•◡•) / _bot
В последних двух я не шарю
Vyacheslav
Вопрос такой, что быстрей, тригонометрические функции через fpu или они же, но реализованных через алгоритмы целочисленной математики?
Целочисленная математика по опыту даёт прирост только, если все вычисления в ней происходят. Пересылки в/из fpu слишком дорогие.
Vyacheslav
Ну и от реализации зависит.
Aiwan \ (•◡•) / _bot
Но знаю что bochs реализует именно железо программным путем, начиная от биоса и остальных железных компонентов
Eugene
Я хотел сделать как-то быстрое вычисление корня из целого числа (32 бита). На FPU всё равно быстрее, не говоря уже о SSE (где не нужно в память писать/читать) .
Eugene
Не могу сказать про то, как устроены Bochs и QEMU, но DOSBox вроде старается сделать всё, как положено, там не менее, косяки там есть. К примеру, in/out работают очень быстро, когда в реальности около 1 мкс даже на современных.
Eugene
QEMU, как пишут, поддерживает аппаратную виртуализацию, поэтому скорость в случае его использования должна быть не сильно ниже скорости реального процессора.
Aiwan \ (•◡•) / _bot
cmc.masm.taskbook.pdf
Aiwan \ (•◡•) / _bot
cmc.masm.taskbook.pdf
#book упражнения masm, чтоб мозги размять
Eugene
Кстати, кто-нибудь пробовал запускать винду на Andriod? 98 хотя бы или, может, XP. Прочитал сейчас, что 98 запускали на Андроиде через Bochs :))