Я изучаю C и не понимаю, какие факторы определяют нужный компилятор и почему.
Допустим, у меня есть код C, представляющий собой небольшое консольное приложение, и я хочу скомпилировать его для определенной платформы. Эта платформа будет иметь определенную ОС и набор инструкций.
Как набор инструкций влияет на то, какой компилятор нужен? Зависит ли это от фактического набора инструкций или только от размера его регистра (16/32/64 бита)? Если это зависит только от того, является ли он 64-битным или 32-битным, не может ли набор инструкций выглядеть по-другому и, таким образом, машинный код не работает? Меня это смущает, потому что всегда предлагаются 32-битные и 64-битные версии приложения, хотя существует несколько возможных наборов инструкций.
Влияет ли ОС, работающая поверх определенного набора инструкций, на то, какой компилятор необходим и почему? Разве машинный код не один и тот же, если процессор тот же?
ОБНОВЛЕНИЕ
Спасибо всем, кто ответил. Мой окончательный вывод