The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Релиз набора компиляторов LLVM 11.0 "
Отправлено n00by, 13-Окт-20 16:44 
Интересно, что оптимизаторы определяют семантику высокоуровнего кода, но есть разница в кодогенераторах:


$ cat popc.c
/** Определяет количество единичных бит. */
unsigned popc(unsigned d)
{
    // См. Генри Уоррен "Алгоритмические трюки для программистов"
    unsigned n = 0;
    while (d) {
        ++n;
        d &= d - 1;
    }
    return n;
}


$ gcc -masm=intel -march=native -O2 -S popc.c -o -
# Неинформативное вырезано
popc:
    popcnt  eax, edi ; ZF is set if SRC = 0, otherwise ZF is cleared.
    test    edi, edi
    mov     edx, 0   ; Зачем?
    cmove   eax, edx
    ret
#
    .ident    "GCC: (Gentoo 10.2.0-r2 p3) 10.2.0"


$ clang -masm=intel -march=native -O2 -S popc.c -o -
#
popc:                                   # @popc
    popcnt eax, edi
    ret
#
    .ident    "clang version 10.0.1 "

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру