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

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

18 ответов

25 просмотров

Ну берёшь значение 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 и "да ну нахер, буду проституткой"

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Ребят в СИ можно реализовать ООП?
Николай
33
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта