толи я не знаю как его сформулировать, толи он слишком очевиден.
Вопрос отчасти не относится к C++:
У меня есть программа написанная на языке C++, пусть это будет стандартный "Hello World". Я собрал её с помощью MSVC в системе на базе процессора Intel. Почему исполняемый файл на выходе работает у моего друга в системе на базе процессора AMD?
Насколько я понимаю у разных процессоров разные op'коды представляют конкретные ассемблерные инструкции, да инструкции врятли у всех одинаковые.
Кроче мой стиль, максимум тупых вопросов. Буду благодарен за ссылки на материал по данной теме.
потому что собрано скорее всего с дефолтными настройками, которые подразумевают что это не самостоятельный exe, а к нему ещё нужны dll с плюсовым рантаймом чтобы это заработало
они реализуют один и тот же набор инструкций, если в общем
Потому что по дефолту в VS собирается приложение под архитектуру процессора: x86-32 или x86-64 И AMD, и Интел делают свои архитектуры так, чтобы поддержать x86
Было бы грустно перекомпилировать под процессоры отдельной компании софт Кажется, когда начиналась мода 64-битных архитектур, Интел пыталась продвинуть свою архитектуру IA64, но она не имела обратной совместимости с x86-32, и не прижилась, потому что ещё к тому AMD выпустила AMD64, которая сейчас известна как x86-64
Потому, что оба процессора принадлежат к семейству архитектуры x86. Конкретнее - к x86-64, 64-битному расширению x86. Используя флаги компилятора можно задать под какую архитектуру процессора компилировать. К примеру, компилятор под x86_64, (т.е. обычный компилятор, не кросскомпилятор), по умолчанию генерирует под x86-64. У gcc и clang, выбор бекенда компилятора (который пишется для генерации машинных кодов под конкретную платформу), осуществляется посредством флага "-march=${ARCH}", где ARCH - целевая архитектура. "-march=x86-64" Так же существует сокращеный вариант. Через "-m$ARCH". "-m32" "-m64". Но рекомендуется использовать полную версию - march.
Потому что система команд процессов AMD совместима с системой команд процессов Intel x86.
Насколько я понимаю у разных процессоров разные op'коды представляют конкретные ассемблерные инструкции, да инструкции врятли у всех одинаковые. Ты понимаешь неправильно. В принципе да, разные процессоры - разные инструкции. Но AMD наоборот делался совместимым с Intel x86 . Иначе по него не было бы софта. Также делался процессор Эльбрус, например
Обсуждают сегодня