Каковы различия между архитектурой набора команд (ISA) и машинным языком? Являются ли они одним и тем же понятием, языком, на котором код может работать непосредственно на компьютере? Спасибо!
1 ответ
Машинный язык - это реальный двоичный поток, выполняемый процессором.
Язык ассемблера использует мнемонику и стандартный синтаксис, с которыми людям легче работать. Ассемблер возьмет текстовый файл, состоящий из них, и переведет или соберет его в двоичный объектный файл, содержащий машинный язык.
Может быть промежуточный шаг, называемый связыванием, если у вас есть код в нескольких файлах и есть инструкции "вызывать" подпрограммы в других файлах. Продвинутые ассемблеры не слишком отличаются от компиляторов.
Архитектура набора команд - это конкретное определение изготовителя ЦП или реализация машинного языка + мненоника и стандартный синтаксис для него.
Большинство МСА существуют уже давно, поэтому, как правило, существует множество пересмотров. Итак, у вас есть Intel x86 ISA, но разные ревизии в зависимости от того, говорите ли вы о старых 8086, 80286, 80386 и т.д. То же самое с ARM, у вас есть ARMv5, ARMv6, ARMv7 и т.д.