The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз набора компиляторов LLVM 15.0, opennews (?), 06-Сен-22, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


7. "Релиз набора компиляторов LLVM 15.0"  –2 +/
Сообщение от ИмяХ (?), 07-Сен-22, 07:39 
>>обнуление всех использованных в функции регистров CPU перед возвращением управления

И снижение производительности в несколько раз
>>рандомизация размещения в памяти структур

чтобы поломать всю арифметику указателей

Ответить | Правка | Наверх | Cообщить модератору

8. "Релиз набора компиляторов LLVM 15.0"  +5 +/
Сообщение от Аноним (8), 07-Сен-22, 08:01 
Арифметика указателей для перехода между глобальными структурами - UB. Если в вашем коде есть такая работа с указателями, то вы ССЗБ
Ответить | Правка | Наверх | Cообщить модератору

24. "Релиз набора компиляторов LLVM 15.0"  +/
Сообщение от EULA (?), 07-Сен-22, 10:05 
Нельзя быть не толерантным к злобным буратинам.
Ответить | Правка | Наверх | Cообщить модератору

31. "Релиз набора компиляторов LLVM 15.0"  +1 +/
Сообщение от Аноним (30), 07-Сен-22, 11:13 
Надо быть толерантными ко всем буратинам, но злобных сажать в тюрьму, но делать это толерантно.
Ответить | Правка | Наверх | Cообщить модератору

9. "Релиз набора компиляторов LLVM 15.0"  +/
Сообщение от Sw00p aka Jerom (?), 07-Сен-22, 08:22 
>чтобы поломать всю арифметику указателей

поломается так называемая динамическая арифметика, компиляторная будет работать, а всякие роп пейлоады как раз на эту динамику и расчитаны.

Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

16. "Релиз набора компиляторов LLVM 15.0"  +1 +/
Сообщение от Бывалый смузихлёб (?), 07-Сен-22, 08:56 
Несколько команд снизят производительность в несколько раз ?
Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

18. "Релиз набора компиляторов LLVM 15.0"  +/
Сообщение от Брат Анон (ok), 07-Сен-22, 09:03 
Не несколько команд. Регистров не несколько. Но в 2 раза вполне может. С учётом относительно медленной оперативной памяти не так страшно, но размер программ вырастает, кеш используется менее эффективно.
Ответить | Правка | Наверх | Cообщить модератору

23. "Релиз набора компиляторов LLVM 15.0"  –1 +/
Сообщение от Бывалый смузихлёб (?), 07-Сен-22, 09:57 
Даже будучи смузихлёбом смутно припоминаю, что были команды для сохранения всех регистров в стеке-восстановления всех регистров из стека
Вроде popad-pushad. Что-то подобное, вроде бы, даже под 64 бита было( pushfq ? )
Ответить | Правка | Наверх | Cообщить модератору

29. "Релиз набора компиляторов LLVM 15.0"  –2 +/
Сообщение от n00by (ok), 07-Сен-22, 10:51 
PUSHF (опкод 9D) сохраняет регистр флагов (F). В 64-х разрядном режиме тот же опкод называется PUSHFQ и сохраняет расширенный регистр флагов RFLAGS. POPA довольно медленная, вместо неё рекомендовалось использовать серию POP или MOV. В 64-х разрядном режиме её убрали. Но сохранять-восстанавливать регистры как раз не надо (это упростило бы создание ROP-цепочек), обнулять быстрее (нет работы с памятью).
Ответить | Правка | Наверх | Cообщить модератору

85. "Релиз набора компиляторов LLVM 15.0"  +/
Сообщение от Брат Анон (ok), 08-Сен-22, 13:43 
> Даже будучи смузихлёбом смутно припоминаю, что были команды для сохранения всех регистров
> в стеке-восстановления всех регистров из стека
> Вроде popad-pushad. Что-то подобное, вроде бы, даже под 64 бита было( pushfq
> ? )

Вы новость читали? При чём тут сохранение на стеке, если речь в статье шла про возможность утечки данных по остаточным данным в регистрах?

Ответить | Правка | К родителю #23 | Наверх | Cообщить модератору

88. "Релиз набора компиляторов LLVM 15.0"  +/
Сообщение от Аноним (83), 08-Сен-22, 13:57 
>Вроде popad-pushad

Эти команды чудовищно медленные и в тактах выигрыша не будет, только в объёме кода, плюс нужно завершить все спекулятивные операции. Там ещё есть команды для сохранения FPU/SSE и это уже настолько большая боль, что ОС старается по возможности его не сохранять даже при переключении процессов/потоков.
>pushfq

Это инструкция сохранения 64-битного регистра флагов. Инструкций сохранения всех регистров на архитектуре  x86-64 совсем нет. Даже тех, что были на x86-32 вроде pusha, pushad, опкод 0x60 просто пуст.

Ответить | Правка | К родителю #23 | Наверх | Cообщить модератору

28. "Релиз набора компиляторов LLVM 15.0"  –3 +/
Сообщение от n00by (ok), 07-Сен-22, 10:37 
> Не несколько команд. Регистров не несколько. Но в 2 раза вполне может.

Медленный Silvermont исполняет 2 (две) XOR за такт. CALL - 1-2 такта. RET - 1 такт. Так что прежде чем писать что-то с аватаркой Ленина, хорошо бы последовать его примеру и три раза поучиться арифметике.

Ответить | Правка | К родителю #18 | Наверх | Cообщить модератору

84. "Релиз набора компиляторов LLVM 15.0"  +1 +/
Сообщение от Брат Анон (ok), 08-Сен-22, 13:42 
>> Не несколько команд. Регистров не несколько. Но в 2 раза вполне может.
> Медленный Silvermont исполняет 2 (две) XOR за такт. CALL - 1-2 такта.
> RET - 1 такт. Так что прежде чем писать что-то с
> аватаркой Ленина, хорошо бы последовать его примеру и три раза поучиться
> арифметике.

Это же две команды? И сколько их нужно всего? И на сколько при этом упадёт эффективность кеша?

Ответить | Правка | Наверх | Cообщить модератору

89. "Релиз набора компиляторов LLVM 15.0"  –1 +/
Сообщение от n00by (ok), 08-Сен-22, 14:49 
>>> Не несколько команд. Регистров не несколько. Но в 2 раза вполне может.
>> Медленный Silvermont исполняет 2 (две) XOR за такт. CALL - 1-2 такта.
>> RET - 1 такт. Так что прежде чем писать что-то с
>> аватаркой Ленина, хорошо бы последовать его примеру и три раза поучиться
>> арифметике.
> Это же две команды? И сколько их нужно всего?

Что тут нужно, так это доказать утверждение «снижение производительности в несколько раз». Доказывает его заявитель. Я понимаю, что доказательство невозможно даже для вырожденного частного случая, потому вместо него будет всевозможная чушь и плюсики самому себе.

> И на сколько при этом упадёт эффективность кеша?

Кеш данных не имеет отношения к вопросу. Вообще. Но человеку, кто видел асм лишь на картинках, я объяснять не берусь. Да, начиная демагогию, будь готов к зеркальному ответу.

Ответить | Правка | Наверх | Cообщить модератору

27. "Релиз набора компиляторов LLVM 15.0"  –1 +/
Сообщение от n00by (ok), 07-Сен-22, 10:33 
> Несколько команд снизят производительность в несколько раз ?

Там типичный эксперт. А вот талмуд:


Table 2-3. Skylake Microarchitecture Execution Units and Representative Instructions
Execution  # of   Instructions
Unit        Unit

ALU         4     add, and, cmp, or, test, xor, movzx, movsx, mov, (v)movdqu, (v)movdqa, (v)movap*, (v)movup*


Для обнуления используется XOR, в наличии 4 исполнительных устройства (то есть могут исполняться параллельно).
Ответить | Правка | К родителю #16 | Наверх | Cообщить модератору

37. "Релиз набора компиляторов LLVM 15.0"  +2 +/
Сообщение от Аноним (-), 07-Сен-22, 12:08 
А вот красавец который кроме wintel себе ничего представить не может и потому считает что талмуд на скайлэйк это универсальный ответ на все вопросы вселенной.
Ответить | Правка | Наверх | Cообщить модератору

43. "Релиз набора компиляторов LLVM 15.0"  +/
Сообщение от n00by (ok), 07-Сен-22, 12:39 
А ещё я имею представление, сколько примерно команд находится в теле средней подпрограммы и прикинуть отношение их количества к количеству команд обнуления. Но при этом догадываюсь, что это слишком сложная для некоторых Анонимов арифметика, потому ограничиваюсь наглядным частным случаем.
Ответить | Правка | Наверх | Cообщить модератору

49. "Релиз набора компиляторов LLVM 15.0"  +/
Сообщение от Аноним (49), 07-Сен-22, 12:53 
А что такое средняя подпрограмма? Это типа средней температуры по больнице? :)
Ответить | Правка | Наверх | Cообщить модератору

51. "Релиз набора компиляторов LLVM 15.0"  +/
Сообщение от n00by (ok), 07-Сен-22, 13:03 
Это та цифра, которую эксперты подставят в известную им формулу и наконец-то докажут тезис «снижение производительности в несколько раз». ;)
Ответить | Правка | Наверх | Cообщить модератору

63. "Релиз набора компиляторов LLVM 15.0"  +1 +/
Сообщение от аНОНИМ (?), 07-Сен-22, 18:20 
Вы все тут эксперды. По факту нормальный OoO процессор, видя XOR reg,reg -- ничего не выполняет вообще и такая команда пропадает на этапе шедулинга, в конвееры АЛУ не идёт. Вместо этого, этот регистр просто размапливается в таблице соответствия между архитектурными и физическими регистрами.
Ответить | Правка | К родителю #27 | Наверх | Cообщить модератору

72. "Релиз набора компиляторов LLVM 15.0"  +/
Сообщение от срыватель_покровов (?), 08-Сен-22, 00:29 
Молодец, единственный кто осилил прочитать мануал. Это удивительно - особенно на фоне всех клоунов выше. Правда всё остальное, кроме самого факта существования мапинга - чушь. На "алу" шедулит шедулер, который работает уже с физическими регистрами. Но то ладно.

Важно то, что никому нахрен не упёрся факт исполнения. Если говорить про такое днище как х86, то уже тысячи лет оно упирается во фронтенд. А что-то исполняется/нет это не влияет на производительность - если только на энергопотребление.

Ответить | Правка | Наверх | Cообщить модератору

82. "Релиз набора компиляторов LLVM 15.0"  +/
Сообщение от n00by (ok), 08-Сен-22, 13:13 
> Если говорить про
> такое днище как х86, то уже тысячи лет оно упирается во
> фронтенд.

По факту CodeAnalyst закопали всего лет десять назад, а без симуляции конвейера кто  ̶п̶е̶р̶в̶ы̶й̶ ̶н̶а̶д̶е̶л̶ ̶х̶а̶л̶а̶т̶ ̶т̶о̶т̶ ̶и̶ ̶п̶с̶и̶х̶и̶а̶т̶р̶  громче всех крикнет «клоуны» то и прав. Так что знайте на будущее: х86 это 16-ти разрядная архитектура, кто скажет иначе - тот не видел у мануала даже название.

Ответить | Правка | Наверх | Cообщить модератору

95. "Релиз набора компиляторов LLVM 15.0"  +/
Сообщение от срыватель_покровов (?), 09-Сен-22, 02:05 
Ты выше опозорился и пришёл сюда плакаться? Какая архитектура, какой CodeAnalyst, какой "16-ти разрядная"? Ты от позора решил просто рандомные базворды из гугла пастить?
Ответить | Правка | Наверх | Cообщить модератору

97. "Релиз набора компиляторов LLVM 15.0"  +/
Сообщение от n00by (ok), 09-Сен-22, 11:01 
Это что, выпуск экстерном нового актива «центра псих операций»? Мануал, который вышеописавшийся друг мракобесия ни разу в глаза не видел, называется 64-ia-32-architectures-optimization-manual.pdf  Соответственно и архитектура - IA32, а не как пытается внушить вон тот член секты Cвидетелей i8086.
Ответить | Правка | Наверх | Cообщить модератору

81. "Релиз набора компиляторов LLVM 15.0"  +/
Сообщение от n00by (ok), 08-Сен-22, 13:04 
Вы слишком рано ответили. Такие умозаключения разбиваются железным аргументом «А вот красавец который кроме wintel себе ничего представить не может». Потому про вещи типа сброса зависимостей по данным (xor влияет на флаги) и гипотетическую возможность получить выигрыш по скорости за счёт отброса ненужной ветки (которая без xor бы спекулятивно исполнилась) я даже заикаться не стал.

Если же возьмём общий случай и придумаем фантастическую архитектуру, то можно накидать вот такой минимальный пример:

R1 <- arg1
R2 <- arg2
R3 <- R1 + R2
R1 <- 0
R2 <- 0

5 команд из которых 2 «тормозят в несколько раз» (ц) 3 оставшиеся. Это без учёта вызова и возврата. Я не знаю, как и что тут надо поделить, что бы получить что-то заметно больше чем 1,5. Но точно знаю, что вон тот крендель в кепочке должен одурачить пролетариат, иначе ему не получить власть. Ну, например, он может дописать R3 <- 0 (используется же регистр!) и я сяду в лужу. ;) А вон тот Ванёк ничего не сможет дописать - он уже признался, что эксгибиционист.

Ответить | Правка | К родителю #63 | Наверх | Cообщить модератору

41. "Релиз набора компиляторов LLVM 15.0"  +2 +/
Сообщение от Ванёк (?), 07-Сен-22, 12:37 
Если небольшая функция, и она активно используется, и компилятор её не встроил (inline), то может и в несколько раз...
Ответить | Правка | К родителю #16 | Наверх | Cообщить модератору

45. "Релиз набора компиляторов LLVM 15.0"  –2 +/
Сообщение от n00by (ok), 07-Сен-22, 12:44 
Готовы показать пример такой функции?
Ответить | Правка | Наверх | Cообщить модератору

21. "Релиз набора компиляторов LLVM 15.0"  +/
Сообщение от Аноним (21), 07-Сен-22, 09:35 
>>>рандомизация размещения в памяти структур
> чтобы поломать всю арифметику указателей

Если кто-то ходит по структуре по хардкоженым оффсетам, то где-то ошибка на этапе дизайна. Если это действительно нужно (какой-то бинарный протокол), то этому атрибуту явно там не место

А так фича уже старая, просто в кланге поддержка появилась только сейчас. Ваши эти линуксы давно используют этот атрибут для важных структур, если сборка идёт с гцц

Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

92. "Релиз набора компиляторов LLVM 15.0"  +/
Сообщение от Аноним (92), 09-Сен-22, 01:18 
> Если кто-то ходит по структуре по хардкоженым оффсетам, то где-то ошибка на этапе дизайна.

Есть вполне себе легальный offsetof.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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