Конвейеризация означает параллельное исполнение стадий инструкций в конвейере. Да, это стадии разных инструкций, но исполняются они параллельно.
Ну вы накрутили. По порядку:
1) А кто и как мог бы указывать производителям платформ как эти платформы следует поддерживать инструментарием?
2) До сих пор речь шла о Си. С Си++ дело несколько сложнее из-за того, что используемые соглашения (а их в случае с Си++ гораздо больше, чем в случае Си) отчасти диктуются фронтом компилятора, который обычно самим производителем платформы не разрабатывается, а лицензируется у других компаний.
3) ANSI уже давно никак не трактует Страуструпа. Во-первых, потому, что стандартизация ведется в рамках международной рабочей группы ISO, представленной членами рабочих групп национальных комитетов по стандартизации. Во-вторых, современный Си++ уже насколько далек от страуструповского ARM, что трактовать там уже нечего. В-третьих, сам Страуструп с первых дней стандартизации и по сей день участвует в работе группы, поэтому любые трактовки излишни.
4) Стандарты на Си и Си++ пользуются абстрактными машинами, а не виртуальными машинами. Эти абстрактные машины -- это абстракции, обобщенные, параметризованные описания целевых машин, для которых стандарты определяют требования и в терминах которых определяют семантику исполнения. Никакой предварительной генерации кода в эти машины нет. Но если понимать под промежуточным кодом промежуточное представление (высокоуровневое представление скомпилированной единицы трансляции), то да, фактически фронт на выходе дает так сказать код для абстрактной машины.
---------- Post added at 21:46 ---------- Previous post was at 21:44 ----------
Да. Если инструкции исполняются в конвейере, они могут исполняться только циклами конвейера, других нет. И если какая-либо стадия какой-нибудь инструкции задерживается, то задерживается весь конвейер.





Ответить с цитированием