169 похожих чатов

Добрый верчер, а стоит ли использовать lea для вычислений произвольных

значений, как замена add/imul?

28 ответов

103 просмотра

Нужно.

strewg- Автор вопроса
КТ315
Нужно.

а работает ли быстрее, и короче ли выходит по размерам?

КТ315
Быстрее.

сложение не факт, а умножение только на ряд маленьких констант

КТ315
Сложение тоже быстрее.

если бы это было так, то компиляторы бы совали её везде подряд, но увы это не так

disba1ancer
если бы это было так, то компиляторы бы совали её ...

Потому что они не умеют оптимизировать максимально. У них оптимальная оптимизация. Когда в коде AGU практически не занят - lea просто идеальный вариант для любых вычислений.

КТ315
Потому что они не умеют оптимизировать максимально...

возможно, но инструкция lea как раз загрузит этот блок и следующие несколько инструкций придётся использовать обычные, что компиляторы обычно и делают

disba1ancer
возможно, но инструкция lea как раз загрузит этот ...

Ты забываешь, что на современных процессорах этих блоков не 1, и даже не 2. Конкретно ALU и AGU могут достигать даже 8. Так что параллельно 8 независимых LEA процессор за такт точно смогёт выполнить)

КТ315
Ты забываешь, что на современных процессорах этих ...

ну 8 за такт это не совсем правда, но да, примерно так, в любом случае использовать только одно, не используя другое, глупо

disba1ancer
ну 8 за такт это не совсем правда, но да, примерно...

Не, так я же не говорю, что только lea надо. Да и это невозможно, lea достаточно ограниченная инструкция. Но если возможно - надо использовать. А вот про умножение - его брезгуют использовать, зачастую могут использовать sal/sar.

КТ315
Не, так я же не говорю, что только lea надо. Да и ...

что касается умножения, то его надо использовать, тем более, что инструкции сдивига на некоторых процессорах исполняются столько же сколько умножение

КТ315
Не, так я же не говорю, что только lea надо. Да и ...

чего действительно стоит избегать, так это деления, оно ужасно медленное

disba1ancer
что касается умножения, то его надо использовать, ...

Ты же компилятор в пример приводил, вот я и говорю про них - они постоянно только sar/sal и используют.

КТ315
На любой.

приведи конкретный пример

КТ315
screenshot

поставь 22

disba1ancer
поставь 22

Зачем? Он на каждом случае будет разные варианты использовать. Ты попросил пример с sal - я показал. На числа типа 12 он будет его постоянно тыкать. На меньше - будет lea. imul он брезгует использовать.

КТ315
Зачем? Он на каждом случае будет разные варианты и...

так ты сказал, что ставит sal на любой код, оказалось это таки не так, хотя действительно лучше во всех случаях умножать

disba1ancer
так ты сказал, что ставит sal на любой код, оказал...

Ты сказал, что он sal вообще не использует, оказалось это не так.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта