Цитата
Никогда не слышал, чтобы процы были оптимизированы под Паскаль или C...
Такая ситуация наблюдалась в конце 70-х - начале 80-х годов XX века. Например в процессорах мини-ЭВМ семейства VAX от DEC одной инструкцией были реализованы не только пролог функции и копирование строки символов, но и операции с односвязным списком. Вот пример одной из команд этой архитектуры:
INDEX <b>, <l>, <h>, <s>, <i>, <a> - вычисление адреса элемента массива (<b> - адрес массива, <l> и <h> - границы индекса, <s> - размер элемента, <i> - индекс элемента, <a> - место, куда будет помещён результат). Операции С "++" и "--" - не что иное, как режим адресации с инкрементом/декрементом - характерная черта системы команд PDP (именно на этой архитектуре родился указанный язык). Для такого подхода существовали вестские причины: дело было на заре теории трансляции, недостаток вычислительных мощностей не позволял реализовывать достаточно гибкие алгоритмы оптимизации. Желание помочь разработчикам компиляторов было оправдано.
Сегодня мы имеем ситуацию, противоположную указанной. Производители процессоров не стремятся "заточить" систему команд под ЯВУ: задача оптимизации генерируемого кода практически полностью перешла в руки разработчиков компиляторов. В x86 только две инструкции были добавлены исключительно на благо ЯВУ: это ENTER и LEAVE (пролог и эпилог, функции; ни та, ни другая не используются в BP). Современные аппаратные средства оптимизации расcчитаны на повышение эффективности выполнения произвольного (в смысле источника генерации, но не семантики) кода.
The idiots are winning.