C/C++

Как компилятор будет обрабатывать код если процессор не поддерживает не которые написаные команды в коде?

Компилятор ничего не знает о системе команд твоего процессора и никак не учитывает её при генерации кода. Он просто генерирует коды по заложенным в него правилам.

Но нормальный компилятор содержит разные наборы правил - для разных наборов команд. И ты ключами компилятора можешь выбрать тот набор команд, который будет использован в сгенерированном компилятором коде.
АГ
Андрей Герасименко
91 098
Лучший ответ
Компилятор рассчитан на систему команд определенного процессора, в котором есть все известные компилятору команды. Он создает машинный код только для такого процессора. Если запустить программу на процессоре, в котором каких-то команд нет, поведение программы непредсказуемо.
Аппаратной поддержки не будет, но программная эмуляция возможна.
Саша Ткаченко
Саша Ткаченко
74 283
В коде ассма прям написано, для какого процессора этот код генерируется. На своем компьютере ты можешь сгенерировать файл (набор бит) для любого компьютера, что говорит, что он у тебя не обязан всегда запускаться.
В самом коде ты делаешь блоки кода с учетом того, есть ли такие команды и если их нет, то просто данный блок кода не будет выполняться, а его будут обходить. Но, даже если ты такой блок запустишь, то скорее всего процессор будет думать, что это какая-то другая команда, так как он анализирует просто числа.
Коля Афонин
Коля Афонин
71 045
Таки скомпилирует бинарник. Но он, конечно же, не запустится.
Компилятору решительно похрен, что преобразовывать
Компилятор лишь проводник от высших языков программирования, до языка, распознаваемого компьютером - нули и единицы
например?
Валихан Буранбаев например SSE 4
а процессор поддерживает до SSE 3