The OpenNET Project / Index page

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

02.04.2013 11:02  Анализ использования ассемблерных вставок в коде открытых проектов

Стив Макинтаир (Steve McIntyre), несколько лет занимавший пост лидера проекта Debian, опубликовал результаты исследования интенсивности использования ассемблерного кода в открытых проектах. Исследование проведено инженерной группой консорциума Linaro, занимающегося адаптацией и оптимизацией открытых проектов и Linux для платформы ARM, совместно с разработчиками дистрибутивов Ubuntu и Fedora.

Исследование нацелено на выявление областей, требующих доработки в процессе внедрения новой 64-разрядной архитектуры ARMv8 (AArch64) и серверных систем на базе архитектуры ARMv7. Наличие специфичных для различных архитектур ассемблерных вставок является одним из признаков необходимости портирования кода для использования на новой архитектуре или проведения дополнительных оптимизаций. В итоге, после изучения кода всех пакетов в репозиториях Ubuntu и Fedora, был сформирован список из 1435 пакетов, включающих ассемблерные вставки и проведён анализ где и для чего они используются и действительно ли подобные вставки необходимы.

Основные выводы:

  • Подавляющее большинство приложений в репозиториях не требуют отдельного портирования. Например, из более 20 тысяч src-пакетов в репозитории Ubuntu 13.04 только около 1200 (6%) содержат ассемблерные вставки.
  • Большинство пакетов с ассемблерными вставками будут работать на других архитектурах без дополнительного портирования так как ассемблерный код используется только для оптимизации и предусматривает наличие замены на C/C++ или связан с реализацией дополнительных возможностей, что не блокирует сборку приложения на новых архитектурах.
  • Большая часть ассемблерных вставок малозначительна и не создаёт должного увеличения производительности. Часто разработчики пытаются использовать тривиальный код с надеждой увеличить скорость выполнения тех или иных действий, но при этом общий эффект подавляется другими узкими местами.
  • Наименее приоритетными категориями портирования называются игры и десктоп-приложения. В первую очередь планируется портировать системные компоненты, библиотеки и базовые инструменты. Среди пакетов, требующих портирования, отмечаются: ядро, gcc, (e)glibc, klibc, libffi, binutils, gdb, device-tree-compiler, libunwind, openjdk, mpfr, llvm, gmp. Будут работать, но требуют реализации дополнительных оптимизаций grub2, TBB, openssl, libatomic-ops, libgcrypt, php, postgres, mysql, libaio. Кроме того, в первоочерёдный список портирования попали zlib, libgc, libjpeg, dlmalloc, nss и gnulib.
  • В списке основных проблем упоминается необдуманное копирование оптимизаций из одного приложения в другое, во многих пакетах они применены не к месту и не приводят к ожидаемому разработчиками эффекту. Часто подобным образом расползается по проектам код, содержащий ошибки. Другой проблемой является встраивание библиотек в программу, вместо их использования в качестве зависимости. Некоторые ассемблерные вставки нельзя трактовать иначе, как код, забытый десятилетия назад. Например, был обнаружен код для систем VAX, образца 1970-х годов. Также во многих местах ассемблерный код присутствует в коде, но не используется.

Выявленные ассемблерные компоненты были разделены на следующие категории (проценты указаны относительно числа пакетов с ассемблерными вставками):

  • 38.1% пакетов используют ассемблерный код для выполнения различных низкоуровневых операций, таких как прямое взаимодействие с оборудованием и определение типа аппаратного обеспечения. Многие программы используют инструкции CPUID для идентификации CPU, при этом данные чаще всего используются лишь для статистики/диагностики и напрямую не связаны с работой приложения. Популярно также использование инструкций RDTSC для взаимодействия с таймером в программах для тестирования производительности.
  • 30.4% пакетов используют ассемблерные вставки для оптимизации производительности, например, для ускорения мультимедийных операций применяются инструкции SIMD (MMX/SSE/SSE2). Многие из ассемблерных оптимизаций типовые и скопированы из других пакетов не разбираясь особо как именно работает код.
  • 18.1% пакетов связны со встраиванием в состав кода различных типовых библиотек, содержащих ассемблерные вставки, например, чаще всего встраиваются libjpeg, gettext, gnulib, libgc, sqlite и zlib.
  • 11.1% пакетов попали в список по ошибке, например, файлы с расширением ".s" были приняты за код на ассемблере или программы содержат ассемблерный код в форме данных, в комментариях или в документации.
  • В 10% пакетов ассемблерный код используется для реализации различных атомарных примитивов, таких как блокировки и операции инкремента/декремента.
  • 9.3% пакетов включают ассемблерный код, необходимый для обеспечения работы на других операционных системах или сторонних платформах, т.е. в Linux такой код не используется.
  • В 2.9% пакетов ассемблерные вставки используются для прямого управления содержимым служебных областей исполняемых файлов или библиотек.


  1. Главная ссылка к новости (http://blog.einval.com/2013/03...)
Лицензия: CC-BY
Тип: Обобщение
Ключевые слова: assembler, code
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, x0r (??), 13:28, 02/04/2013 [ответить] [показать ветку] [···]    [к модератору]
  • +4 +/
    интересный обзор
     
  • 1.2, Аноним (-), 13:28, 02/04/2013 [ответить] [показать ветку] [···]    [к модератору]
  • –4 +/
    >около 1200 (6%) содержат ассемблерные вставки

    Ни фига себе! Я бы предположил, что от 12 до 120 (0,06--0,6%).

     
     
  • 2.25, цирроз (ok), 16:20, 02/04/2013 [^] [ответить]    [к модератору]
  • +3 +/
    так это же только количество пакетов, где порой делают вставки. а не сравнение объёмов исходников.
     
  • 2.69, Аноним (-), 04:41, 03/04/2013 [^] [ответить]     [к модератору]
  • –1 +/
    Одни только кодеки и сколь-нибудь серьезные библиотеки и плееры - по жизни содер... весь текст скрыт [показать]
     
  • 1.3, TbIK (ok), 13:32, 02/04/2013 [ответить] [показать ветку] [···]    [к модератору]  
  • –2 +/
    Разве для оборудования нет Си-шных функций записи в порты??
     
     
  • 2.8, Аноним (-), 14:33, 02/04/2013 [^] [ответить]    [к модератору]  
  • +/
    чего?
     
     
  • 3.10, анон (?), 14:41, 02/04/2013 [^] [ответить]    [к модератору]  
  • +1 +/
    си
     
  • 2.9, dalco (ok), 14:41, 02/04/2013 [^] [ответить]     [к модератору]  
  • –1 +/
    Вряд ли такое возможно Это же необходимо свою индивидуальную версию Си не то, ч... весь текст скрыт [показать]
     
     
  • 3.16, Аноним (-), 14:52, 02/04/2013 [^] [ответить]     [к модератору]  
  • +3 +/
    Угрожающе надвигается долгий-долгий разговор о том, что автор понимает под терми... весь текст скрыт [показать]
     
     
  • 4.28, pavlinux (ok), 16:27, 02/04/2013 [^] [ответить]     [к модератору]  
  • +4 +/
    include asm-generic io h static inline void __raw_writeb u8 b, volatile void __i... весь текст скрыт [показать]
     
     
     
    Часть нити удалена модератором

  • 6.58, skb7 (ok), 23:25, 02/04/2013 [ответить]     [к модератору]  
  • +2 +/
    Посыл топика -- ответить на вопрос, как на Си писать в порты Ваш К О Зачастую ... весь текст скрыт [показать]
     
     
  • 7.65, ананим (?), 01:04, 03/04/2013 [^] [ответить]     [к модератору]  
  • –1 +/
    unsigned int 0x4ae04030 0xdeadbeef И чем это лучше ассемблера Зыж Во... весь текст скрыт [показать]
     
     
  • 8.66, ананим (?), 01:06, 03/04/2013 [^] [ответить]    [к модератору]  
  • –1 +/
    Ззыж
     >*((unsigned int *)0x4ae04030) = 0xdeadbeef;
    Вообще йюх поймёшь что эти цифири значат.
    Заучить?
     
     
  • 9.71, Аноним (-), 04:46, 03/04/2013 [^] [ответить]     [к модератору]  
  • –1 +/
    Поэтому нормальные люди таки дают читаемые обозначения константам Или накрайняк... весь текст скрыт [показать]
     
     
  • 10.76, ананим (?), 06:02, 03/04/2013 [^] [ответить]     [к модератору]  
  • +/
    Большинство пакетов с ассемблерными вставками будут работать на других архитекту... весь текст скрыт [показать]
     
     
  • 11.77, ананим (?), 06:06, 03/04/2013 [^] [ответить]     [к модератору]  
  • –1 +/
    Т е , другими словами, нормальные люди читают выводы А не придумывают свой хре... весь текст скрыт [показать]
     
  • 10.78, ананим (?), 06:11, 03/04/2013 [^] [ответить]     [к модератору]  
  • –1 +/
    Зыж Да похер чем он там знаменит, ГЛАВНОЕ 8212 он аппаратн-зависим И его хер... весь текст скрыт [показать]
     
  • 10.90, skb7 (ok), 11:56, 03/04/2013 [^] [ответить]     [к модератору]  
  • +2 +/
    Было показано, что на Си можно выполнить запись в порт Приведенный код -- прост... весь текст скрыт [показать]
     
  • 7.88, Аноним (-), 11:12, 03/04/2013 [^] [ответить]     [к модератору]  
  • +/
    В таком случае - сам задал вопрос, сам и ответил Загляните в начало ветки Раз... весь текст скрыт [показать]
     
  • 5.70, Аноним (-), 04:43, 03/04/2013 [^] [ответить]     [к модератору]  
  • +/
    Вот только в этом месте скорее всего порылся архитектурно-специфичный асм, если ... весь текст скрыт [показать]
     
     
  • 6.94, pavlinux (ok), 15:39, 03/04/2013 [^] [ответить]     [к модератору]  
  • +/
    ifndef PCI_IOBASE define PCI_IOBASE void __iomem 0 endif define __iom... весь текст скрыт [показать]
     
     
  • 7.107, Аноним (-), 13:01, 05/04/2013 [^] [ответить]    [к модератору]  
  • +/
    > # define __iomem  __attribute__((noderef, address_space(2)))

    Ок, продолжаем разгадки ребусов :) а что в этих определениях? :)


     
  • 2.19, BSA (?), 15:19, 02/04/2013 [^] [ответить]     [к модератору]  
  • +2 +/
    А причем тут запись в порты Если посмотришь исходники ядра, то там для этого сп... весь текст скрыт [показать]
     
     
  • 3.72, Аноним (-), 04:47, 03/04/2013 [^] [ответить]     [к модератору]  
  • +/
    Собственно практически вся современная периферия - memory mapped в основное прос... весь текст скрыт [показать]
     
  • 2.68, Аноним (-), 04:39, 03/04/2013 [^] [ответить]     [к модератору]  
  • +/
    Именно в порты - только через функции-хелперы в которых ASM вероятно все-таки б... весь текст скрыт [показать]
     
     ....нить скрыта, показать (20)

  • 1.4, Аноним (-), 13:55, 02/04/2013 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Вот это просто архиважная вещь... при чем первые две категории (38% и 30%) - ну это просто бред. Если куча копипасты, то могли все вынести в отдельную либу и ее юзать. Дак нет - давайте прямо в код.
     
     
  • 2.11, анон (?), 14:42, 02/04/2013 [^] [ответить]    [к модератору]  
  • +4 +/
    это не бред, а печальная действительность
     
  • 2.12, Аноним (-), 14:47, 02/04/2013 [^] [ответить]     [к модератору]  
  • +5 +/
    Копипаст - любимейший антипаттерн, бережно взращиваемый не одним поколением прог... весь текст скрыт [показать]
     
     
  • 3.15, Аноним (-), 14:51, 02/04/2013 [^] [ответить]    [к модератору]  
  • –2 +/
    А может все это взрощенное поколение в отдельную резервацию, виртуальную (чтоб без доступа к рабочим частям мира). И пусть они там в Hello world сколько угодно копипасты на асме вставляют.
     
  • 2.38, тоже Аноним (ok), 17:13, 02/04/2013 [^] [ответить]     [к модератору]  
  • +2 +/
    Вполне возможно, что это и есть отдельная либа, только в виде исходников Сами ... весь текст скрыт [показать]
     
     
  • 3.53, Аноним (-), 21:03, 02/04/2013 [^] [ответить]     [к модератору]  
  • +/
    100500 Тонко, как английский юмор, подмечено, то что сильно похоже на копипаст... весь текст скрыт [показать]
     
     
  • 4.80, тоже Аноним (ok), 08:33, 03/04/2013 [^] [ответить]     [к модератору]  
  • +/
    Ну, я, используя чужой код, кладу его в исходниках отдельно и под тем именем, по... весь текст скрыт [показать]
     
  • 1.5, Аноним (-), 13:56, 02/04/2013 [ответить] [показать ветку] [···]     [к модератору]  
  • –1 +/
    Одна сплошная депрессия в середине текста анализ где и для чего они используют... весь текст скрыт [показать]
     
     
  • 2.6, Аноним (-), 14:05, 02/04/2013 [^] [ответить]     [к модератору]  
  • +/
    И при чём тут ассемблерные вставки в исходниках портов ... весь текст скрыт [показать]
     
     
  • 3.30, pavlinux (ok), 16:38, 02/04/2013 [^] [ответить]     [к модератору]  
  • +/
    Каких портов, где прочитал ... весь текст скрыт [показать]
     
     
  • 4.31, Аноним (-), 16:43, 02/04/2013 [^] [ответить]     [к модератору]  
  • +/
    Описался по инерции Пакетов, проектов Тем не менее, вопрос - автор собрался оп... весь текст скрыт [показать]
     
  • 2.7, userd (ok), 14:16, 02/04/2013 [^] [ответить]     [к модератору]  
  • +1 +/
    Экак вы загнули Использование source-based дистрибутива и правильных флагов gcc... весь текст скрыт [показать]
     
     
  • 3.13, Аноним (-), 14:48, 02/04/2013 [^] [ответить]    [к модератору]  
  • –2 +/
    Дак как бы оптимизация компилятором по сути и делает ненужными эти дурацкие вставки на asm, теперь только  от них надо избавиться. Вообщем всяческих успехов ребятам.
     
     
  • 4.21, BSA (?), 15:23, 02/04/2013 [^] [ответить]     [к модератору]  
  • –1 +/
    Оптимизации работают в большинстве случаев, но не всегда Если у тебя какая-то х... весь текст скрыт [показать]
     
     
  • 5.40, тоже Аноним (ok), 17:17, 02/04/2013 [^] [ответить]     [к модератору]  
  • +/
    При условии, что тот, кто это пишет, знает ассемблер не хуже тех, кто пишет комп... весь текст скрыт [показать]
     
     
  • 6.46, ананим (?), 18:49, 02/04/2013 [^] [ответить]     [к модератору]  
  • +2 +/
    Человека, не знающего ассемблер и оправдывающего своё незнание 171 ненужностью... весь текст скрыт [показать]
     
     
  • 7.49, тоже Аноним (ok), 19:10, 02/04/2013 [^] [ответить]     [к модератору]  
  • +/
    Извините, но писать Линусу глупости вам придется самостоятельно А я слишком хор... весь текст скрыт [показать]
     
     
  • 8.59, ананим (?), 23:31, 02/04/2013 [^] [ответить]     [к модератору]  
  • +/
    А он итак никому толком и не понадобился Только там, где необходим по моим наб... весь текст скрыт [показать]
     
     
  • 9.60, ананим (?), 23:35, 02/04/2013 [^] [ответить]     [к модератору]  
  • +/
    Зыж Пиндеть, не мешки ворочать Пусть сделают коммит на си например в гстример, ... весь текст скрыт [показать]
     
  • 9.114, arisu (ok), 20:39, 05/04/2013 [^] [ответить]    [к модератору]  
  • +1 +/
    >>вот только ассемблер мне до сих пор так толком и не понадобился. 
    > А он итак никому толком и не понадобился.

    эх, молодёжь…

     
  • 8.108, Аноним (-), 13:02, 05/04/2013 [^] [ответить]    [к модератору]  
  • +/
    > вот только ассемблер мне до сих пор так толком и не понадобился.

    Ну так кто ж вам виноват что вы слили знания в унитаз? Со всеми бывает, не у всех проходит.

     
  • 6.57, Карбофос (ok), 23:07, 02/04/2013 [^] [ответить]     [к модератору]  
  • +1 +/
    не обязательно, можно просто проанализировать профайлерором критичные участки ко... весь текст скрыт [показать]
     
  • 5.42, Аноним (-), 17:35, 02/04/2013 [^] [ответить]     [к модератору]  
  • +1 +/
    В целом можно согласиться Однако есть масса тонкостей, которые низводят пользу ... весь текст скрыт [показать]
     
     
  • 6.51, Аноним (-), 19:22, 02/04/2013 [^] [ответить]     [к модератору]  
  • +2 +/
    Бред Нет Проверено моим студентом - прочитав по диагонали книгу по асемблеру ... весь текст скрыт [показать]
     
     
  • 7.81, Ordu (ok), 09:04, 03/04/2013 [^] [ответить]     [к модератору]  
  • +2 +/
    Вы ведь, я надеюсь, про векторизованную обработку данных через SSE Таки да, я д... весь текст скрыт [показать]
     
  • 7.85, Аноним (-), 10:12, 03/04/2013 [^] [ответить]    [к модератору]  
  • +1 +/
    > Бред.

    Можно на этом и закончить. Дискутировать с троллем - себя не уважать. Удачи.

     
  • 6.52, ананим (?), 20:41, 02/04/2013 [^] [ответить]     [к модератору]  
  • +/
    Да-да Сидит такой программер и думает, дайка я прогу ассемблером заторможу, а т... весь текст скрыт [показать]
     
     
  • 7.56, Карбофос (ok), 22:48, 02/04/2013 [^] [ответить]    [к модератору]  
  • +2 +/
    >Да-да. Сидит такой программер и думает, дайка я прогу ассемблером заторможу, а то что-то быстро работает.

    тише! тише! сейчас изя припрётся и обвинит во всех тормозах ассемблерные вставки :)

     
     
  • 8.61, ананим (?), 23:37, 02/04/2013 [^] [ответить]    [к модератору]  
  • +/
    Там вон в новости и в жабе их кучу нашли (то-то начиная с 6 она порезвела)
     
     
  • 9.62, Карбофос (ok), 23:41, 02/04/2013 [^] [ответить]    [к модератору]  
  • +/
    >Там вон в новости и в жабе их кучу нашли (то-то начиная с 6 она порезвела)

    классика жанра: ОЙ! как неудобно получилось!

     
     
  • 10.64, ананим (?), 00:13, 03/04/2013 [^] [ответить]    [к модератору]  
  • +/
    Да-да! Там на 2-м месте (после ведра) сам (о ужОс!!!) компилятор гцц.
    Щаз онанчик научит их родину любить.
     
     
  • 11.109, Аноним (-), 13:03, 05/04/2013 [^] [ответить]    [к модератору]  
  • +/
    > Да-да! Там на 2-м месте (после ведра) сам (о ужОс!!!) компилятор гцц.

    А также всякий там стартап код и прочая, все что вокруг живет.

     
  • 7.87, Аноним (-), 10:51, 03/04/2013 [^] [ответить]     [к модератору]  
  • –1 +/
    38 1 пакетов используют ассемблерный код для выполнения различных низкоуровнев... весь текст скрыт [показать]
     
     
  • 8.89, ананим (?), 11:16, 03/04/2013 [^] [ответить]     [к модератору]  
  • +/
    так продолжили бы, а не вырывали из контекста при этом Подавляющее большинство ... весь текст скрыт [показать]
     
     
  • 9.91, Аноним (-), 12:16, 03/04/2013 [^] [ответить]     [к модератору]  
  • +/
    Ещё раз Я возражаю против вашего посыла, согласно которому ассемблерные вставки... весь текст скрыт [показать]
     
     
  • 10.92, ананим (?), 12:43, 03/04/2013 [^] [ответить]     [к модератору]  
  • +/
    Ок Сформулируйте, что такое низкоуровневые операции ... весь текст скрыт [показать]
     
     
  • 11.97, Аноним (-), 16:06, 03/04/2013 [^] [ответить]     [к модератору]  
  • –1 +/
    Ой ладно отбрехиваться Вот у меня других дел нет - разводить бестолковую диск... весь текст скрыт [показать]
     
     
  • 12.110, Аноним (-), 13:04, 05/04/2013 [^] [ответить]     [к модератору]  
  • –1 +/
    Учитывая насколько геморно их писать и что они непортабельны - по другим поводам... весь текст скрыт [показать]
     
  • 4.27, цирроз (ok), 16:26, 02/04/2013 [^] [ответить]    [к модератору]  
  • +/
    нет, это далеко не так.
     
  • 3.22, Аноним (-), 15:35, 02/04/2013 [^] [ответить]     [к модератору]  
  • –2 +/
    Толку-то Кажется что сейчас соберёшь систему и будет летать на 486-м, а оно по ... весь текст скрыт [показать]
     
     
  • 4.41, тоже Аноним (ok), 17:26, 02/04/2013 [^] [ответить]     [к модератору]  
  • +/
    Меню приложений XFCE перед первым открытием читает с диска кэш иконок, которые в... весь текст скрыт [показать]
     
     
  • 5.54, Аноним (-), 21:17, 02/04/2013 [^] [ответить]     [к модератору]  
  • +/
    Нет, только не при загрузке системы, ибо при загрузке и так делов достаточно А ... весь текст скрыт [показать]
     
  • 5.63, ананим (?), 23:45, 02/04/2013 [^] [ответить]     [к модератору]  
  • –1 +/
    Именно поэтому бинарные конфиги зло если они все не собраны в один сжатый архив... весь текст скрыт [показать]
     
  • 3.73, Аноним (-), 04:49, 03/04/2013 [^] [ответить]    [к модератору]  
  • +1 +/
    > Использование source-based дистрибутива и правильных флагов gcc восстановит ваш покой.

    И вставки на асме сама под ARM64 перепишет :)


     
  • 3.24, ананим (?), 16:09, 02/04/2013 [^] [ответить]     [к модератору]  
  • +/
    Так целью исследования и было выяснить нужно ли делать такие же ифдэфы для этой ... весь текст скрыт [показать]
     
     ....нить скрыта, показать (37)

  • 1.26, Аноним (-), 16:23, 02/04/2013 [ответить] [показать ветку] [···]    [к модератору]  
  • –3 +/
    Сейчас понабегут аналитеги и скажут, что  ассемблерные вставки не нужны. Что ж, не доросли вы просто еще до понятий.
     
     
  • 2.29, Аноним (-), 16:28, 02/04/2013 [^] [ответить]     [к модератору]  
  • +3 +/
    Ну что ж, а вы не доросли до терпимости к другому мнению У каждого свой потолок... весь текст скрыт [показать]
     
  • 1.34, pavlinux (ok), 16:50, 02/04/2013 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Самая лучшая инстукция - это NOP !
     
     
  • 2.35, Аноним (-), 16:52, 02/04/2013 [^] [ответить]    [к модератору]  
  • –1 +/
    > Самая лучшая инстукция - это NOP !

    Вот я её сейчас и выполняю. В цикле do { ... } while(tm.hour<19); :)

     
     
  • 3.36, Аноним (-), 16:54, 02/04/2013 [^] [ответить]    [к модератору]  
  • +/
    ты не одинок бро)
     
  • 3.37, pavlinux (ok), 17:05, 02/04/2013 [^] [ответить]     [к модератору]  
  • +2 +/
    А вот и нифига, тут есть счётчик, а это уже перегруз NOP - это философия, NOP -... весь текст скрыт [показать]
     
     
  • 4.39, Аноним (-), 17:14, 02/04/2013 [^] [ответить]    [к модератору]  
  • +2 +/
    > Какой-то хороший чай я заварил... Ж=)

    С грибами?!
    :)

     
  • 4.43, Аноним (-), 17:38, 02/04/2013 [^] [ответить]    [к модератору]  
  • +/
    NOP выполняется за четко оговоренное количество тактов, так что созерцать его не считая времени не получится
     
  • 4.45, masakra (ok), 18:28, 02/04/2013 [^] [ответить]    [к модератору]  
  • –1 +/
    Вообще то NOP суть есть MOV EAX,EAX
     
  • 4.55, Led (ok), 22:37, 02/04/2013 [^] [ответить]    [к модератору]  
  • +1 +/
    > NOP - это философия, NOP - это как квадрат Малевича

    учитывая то, что классический однобайтный x86 NOP - это "XCHG AX,AX", то это, может и "философия", но уж никак не "квадрат Малевича".

     
     
  • 5.95, pavlinux (ok), 15:47, 03/04/2013 [^] [ответить]     [к модератору]  
  • +/
    Как это, AX,AX AX в квадрате ... весь текст скрыт [показать]
     
     
  • 6.96, Led (ok), 15:56, 03/04/2013 [^] [ответить]     [к модератору]  
  • +/
    Попробую объяснить смысл операции XCHG AX,AX в понятных тебе терминах шило -... весь текст скрыт [показать]
     
     
  • 7.98, pavlinux (ok), 16:06, 03/04/2013 [^] [ответить]    [к модератору]  
  • –1 +/
    >> И ваще, XCHG выставляет флаги,
    > Какие?:)

    Password missmatch. Access denied.  
    Чё, не меняет? Ну и хуй с ней.. :)

     
     
  • 8.101, Карбофос (ok), 00:29, 04/04/2013 [^] [ответить]    [к модератору]  
  • +1 +/
    завязывай с ложными опятами ;)
     
  • 5.116, Forth (ok), 19:39, 20/05/2015 [^] [ответить]    [к модератору]  
  • +/
    А mov ax,bx можно написать двумя способами.
     
  • 3.75, Аноним (-), 04:51, 03/04/2013 [^] [ответить]    [к модератору]  
  • +/
    > Вот я её сейчас и выполняю. В цикле do { ... } while(tm.hour<19); :)

    Или попросту - протирание штанов :)

     
     
  • 4.82, Аноним (-), 09:13, 03/04/2013 [^] [ответить]    [к модератору]  
  • +/
    с волками жить - по волчьи выть бро)
     
     
  • 5.111, Аноним (-), 13:07, 05/04/2013 [^] [ответить]    [к модератору]  
  • +/
    > с волками жить - по волчьи выть бро)

    Ну, вам же хуже. У вас был выбор...

     
  • 2.44, цирроз (ok), 17:52, 02/04/2013 [^] [ответить]    [к модератору]  
  • +1 +/
    только в закрытых продуктах, я бы скзал. всякие JNZ нопами перебивать :-D
     
     
  • 3.48, ананим (?), 18:57, 02/04/2013 [^] [ответить]    [к модератору]  
  • +/
    дык по заказу хакеров и включили.
    а то как варез то распространять потенциальным клиентам?
     
  • 1.67, Аноним (-), 04:17, 03/04/2013 [ответить] [показать ветку] [···]     [к модератору]  
  • –1 +/
    Зато один конкретный видеокодек, который в одном случае впишется в реалтайм а в ... весь текст скрыт [показать]
     
     
  • 2.79, 123 (??), 08:29, 03/04/2013 [^] [ответить]    [к модератору]  
  • –1 +/
    Тащем-то шейдеры в кодеке практичнее. Да и либ с уже сделанными и оптимизированными алгоритмами у интела и AMD  с терабайт.
     
     
  • 3.84, ананим (?), 10:02, 03/04/2013 [^] [ответить]     [к модератору]  
  • +/
    какое отношение шейдеры имеют к видеокодекам кроме пост-процессинга, который д... весь текст скрыт [показать]
     
  • 2.93, Аноним (-), 14:49, 03/04/2013 [^] [ответить]     [к модератору]  
  • +/
    Хорошо, что пишет, если это действительно дает эффект А исследование о том, что... весь текст скрыт [показать]
     
  • 1.83, anonymous (??), 09:30, 03/04/2013 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    людям нужны прикладные проги и игры, а они глибц и прочие в первую очередь ровняют...
     
  • 1.86, Аноним (-), 10:20, 03/04/2013 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Полное ощущение, что за ночь набежала толпа архитектурных астронавтов.
     
  • 1.99, X86 (ok), 18:33, 03/04/2013 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Я вообще был всегда за то, чтобы весь Линукс с приложениями был на ассемблере)
     
     
  • 2.102, Карбофос (ok), 00:31, 04/04/2013 [^] [ответить]    [к модератору]  
  • +/
    тогда получится КолибриОС
     
     
  • 3.103, Led (ok), 01:42, 04/04/2013 [^] [ответить]    [к модератору]  
  • +/
    > тогда получится КолибриОС

    А она разве получилась?

     
     
  • 4.105, Карбофос (ok), 21:52, 04/04/2013 [^] [ответить]    [к модератору]  
  • +/
    злые языки рассказывают, что и Minix не получился
     
  • 3.112, Аноним (-), 13:08, 05/04/2013 [^] [ответить]    [к модератору]  
  • +/
    > тогда получится КолибриОС

    КарбофОС :)

     
  • 1.100, Аноним (-), 22:26, 03/04/2013 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Ассемблерные вставки позволяют использовать аппаратные возможности процессора, например инструкция POPCNT.
    Это как вместо пересчёта колва спичек в спичечной коробке взвесить её :D
     
     
  • 2.104, Карбофос (ok), 21:51, 04/04/2013 [^] [ответить]    [к модератору]  
  • +/
    как раз такие тривиальные вещи компайлер может делать по усмотрению, если действительно в этом есть необходимость.
     
     
  • 3.113, Аноним (-), 13:10, 05/04/2013 [^] [ответить]     [к модератору]  
  • –1 +/
    Ага, посмотри как GCC дуреет от армовских ld st с группами регистров Он и на ... весь текст скрыт [показать]
     
  • 3.117, Forth (ok), 19:43, 20/05/2015 [^] [ответить]    [к модератору]  
  • +/
    > как раз такие тривиальные вещи компайлер может делать по усмотрению, если действительно
    > в этом есть необходимость.

    Это если компилятор в состоянии это делать, достаточно посмотреть на листинги ассемблерные, что там gcc нагенерил для arm, например, да и на x86 порой чушь есть на -O2.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


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