широко битовые операции с 64-разрядными целыми без знака. Реально используются только 60 младших разрядов.
Раньше, когда основное приложение на С++, использующее эти ассемблерные функции было 32 разрядным, я использовал регистры MM0, MM1, ..., MM7.
Теперь же мы перешли на приложения x64. Соответственно есть желание переписать эти функции с использованием регистров r8 - r15 и общих, которые стали по 64 бита. На самом деле, более 3-х регистров функции не используют.
Вопрос: есть ли в этом смысл? На сколько логические операции с новыми регистрами быстрее, чем с регистрами MMX?
Можно, конечно, тест написать, но может кто сходу скажет.
Регистры MMX оправданы только когда операций с ними много. В случае, если мы, к примеру, помножим MMX, и помножим обычный 64-х разрядный регистр — вторая операция будет быстрее.
Раз у тебя x64, то забудь про MMX, также можно изучить sse
Mxx уже можно считать мёртвым
Мы не можем помножить в MMX, оно 64-битного умножения не умеет.
Да и сложения тоже, емнип
Я думаю, что если оставить за скобками всякие emms, то разницы на современном процессоре не будет вообще. Ну разве что векторных портов меньше, чем обычных, и у процессора больше шансов распараллелить выполнение, но на практике это вряд ли повлияет.
@Nikita_Kulman спрашивал про логические операции, там пофиг.
Обсуждают сегодня