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

А поясните тупому, как a может быть на регистре?

18 ответов

10 просмотров

Ну берёшь значение a со стека и пихаешь его в регистр проца, а на стеке удаляешь. Может у нас там Main корроткий, и мы знаем, что можно занять регистр спокойно.

Dmitriy-Bobrovskiy Автор вопроса
Ilya L
Ну берёшь значение a со стека и пихаешь его в реги...

Ну, окей, это оптимизация, соглашусь, такое может быть.

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

Dmitriy-Bobrovskiy Автор вопроса
Etki
Если эскейп анализ показывает что переменные никуд...

Гм. Ну, тут да. Тут согласен, но я рассматриваю worst-case обычно.

Alex Berezhnykh
Думаю, не мог. Вдруг в Add сайд-эффекты.

переменаая - просто адрес, даже если объект меняется в add, это не отменяет того, что переменную можно удалить со стека

Alex Berezhnykh
Думаю, не мог. Вдруг в Add сайд-эффекты.

Такую мелочь грех не заинлайнить (включая EnsureCapacity)

Ilya Chernoudov
переменаая - просто адрес, даже если объект меняет...

Это про то что если в Add был бы какой Console.WriteLine, то написанное мной про целиковый выброс кода было бы некорректно

Etki
screenshot Такую мелочь грех не заинлайнить (включая EnsureCa...

Вот не согласен. EnsureCapacity на холодном пути лежит и очень дорогой внутри, так что нет. А вот остальное можно и заинлайнить.

Dmitriy-Bobrovskiy Автор вопроса

Так это сайд-эффект же ж.

Dmitriy-Bobrovskiy Автор вопроса
Etki
А речь о чем-то другом?

Ну, просто в стандартных методах контейнеров странно их ожидать.🤷‍♂

Etki
screenshot Такую мелочь грех не заинлайнить (включая EnsureCa...

EnsureCapacity как раз не надо - это ж редкий кейс

Etki
screenshot Такую мелочь грех не заинлайнить (включая EnsureCa...

А потом ты читаешь кодген для throw и "да ну нахер, буду проституткой"

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

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

А случайно нет ли в паскале штатной возможности передать указатель и количество туда где array of в качестве аргумента?
zamtmn
25
Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
58
Ну раз я пока тут, задам пару глупых вопросов. Зачем писать на ассемблере если компилятор довольно умный, а ассемблер много времени занимает? В каких прикладных задачах сейчас...
Максим Рябцев
20
Я тут за тем, чтобы задать вопрос, так как не знаю ассемблер, учу с/с++. Короче, насколько дорога операция перехода в функцию при ее вызове? Дело в том, что в с++ есть макросы...
Максим Рябцев
12
А какие чаты вообще в ходу? Auto aim? И что еше
do you think you're better off alone? А
13
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
14
hello friends. Do you know how can I learn getx? I have a software project that I should deliver it up to 5 weeks later and I need to learn firebase too. I will be thankfull
AmirHossein Razavi
15
Доброе время суток! у меня тут иноды закончились. и понял почему по сути кстит, я периодически очищаю постгрес и сентри контайнер: postgres=# DELETE FROM nodestore_node WHER...
Юсиф Насиров
9
Вопрос. Теоретический. Есть список команд. Команды отправляю в обработку некой функции, по очереди. Разные команды могут давать разные результаты после обработки. В зависимос...
Serjone
7
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Карта сайта