The OpenNET Project / Index page

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



"Ричарда Столлман опубликовал книгу по языку Си и расширениям GNU"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Заметили полезную информацию ? Пожалуйста добавьте в FAQ на WIKI.
. "Ричарда Столлман опубликовал книгу по языку Си и расширениям..." +/
Сообщение от Аноним (-), 13-Сен-22, 11:59 
> Да.

Ну так то оно наверное может работать, но кажется это будет не бесплатно. При том что это 1 частный случай проблемы, а есть еще более 9000 вариантов как сломать flow софта. Если каждый с пеналти затыкть, в целом получится жуть на уровне дотнета в лучшем случае.

> Верно.

И это испортит оптимизацию, не халявно. Ну вон integer overflow может быть весьма фатален если это массив или указатель. И даже если там код и не выполнится, много с этого радости дохлым водилам тойот?

> На IA32 оно так всегда и было,

И это одна из причин искренне желать ей смерти. Костылищи которые пришлось вбить на уровне железа поражают воображение. Да, там есть "register renaming" и проч, так что реально регистров сильно больше чем вывешено. Однако вывесить как доступное кодеру и компилеру апи было бы, имхо, эффективнее. Во всяком случае в разумных пределах. IA32 являет собой коллекцию костылей и подпорок compat с уродским легаси ABI.

> наверное со времён шестнадцатиразрядного x86 с командами enter+leave.
> В прологе esp копировался в ebp и далее вся работа шла через ebp. Тогда это
> объяснялось, что при адресации через регистр базы опкод получается на байт меньше.

В IA32 было очень много дурных решений. А потом... потом совместимость, и по крупному ее сломать решился только AMD в x86-64. И даже там они зассали это сделать как следует и ограничились какими-то полумерами. Могли бы и лучше, но видимо побоялись участи итаника.

> На деле, подозреваю, компиляторы были не очень, а адресовать через ebp проще - в
> отличие от esp он в теле подпрограммы не меняется. Потом появился
> -fomit-frame-pointer и регистр освободили.

Со временем интель вообще отрастил "виртуальные" регистры, и прямо на уровне железа стал оптимизить ряд операций, так что железо начало делать по факту совсем не то что в коде.  Но это такой фееричный костыль на легаси аби во имя совместимости вместо того чтобы уже сделать проц нормально наконец...

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

Оглавление
Ричарда Столлман опубликовал книгу по языку Си и расширениям GNU, opennews, 07-Сен-22, 10:12  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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