Является ли архитектура набора команд бинарной (не читаемой) или читабельной?
- Если я прав, ISA - это набор инструкций на машинном языке. Так есть ли инструкции в двоичных последовательностях ISA 0/1?
Почему я увидел инструкции в ISA - понятные человеку слова в книгах?
Являются ли понятные человеку слова, которые представляют инструкции в ISA, такими же, как мнемоника, используемая в языке ассемблера ISA?
Являются ли понятные человеку слова инструкций в ISA частью ISA?
Если да, то есть ли процесс перевода, который переводит понятные человеку инструкции в ISA на машинный язык, точно так же, как ассемблер переводит язык ассемблера на машинный язык?
Благодарю.
2 ответа
ISA определяет, по крайней мере, имя инструкции и двоичное кодирование команд и их операндов. Он также может определять синтаксис / семантик ассемблера для использования, то есть удобочитаемую форму.
Но фактический компилятор может использовать другой синтаксис. Например: для IA32 ISA (x86) существует стиль ассемблера Intel и AT&T. И то, и другое отличается в том, указан ли регистр результата в качестве первого или последнего операнда в команде ассемблера.
Читаемые человеком слова в книгах называются ассемблером, и да, инструмент, называемый ассемблером, преобразует язык ассемблера в машинный код, который представляет собой единицы и нули, которые что-то значат для логики. Вы также можете разобрать, взяв машинный код и заканчивая языком ассемблера.
Набор или набор команд для конкретного процессора называется архитектурой набора команд или набора команд или ISA.
Машинный код - это то, что имеет значение, это то, на чем работает процессор. читаемый человеком ассемблер не обязательно имеет стандарт. Компания, которая разрабатывает процессор, обычно создает документ с машинным кодом и языком ассемблера, и обычно они создают или заставляют кого-то создать ассемблер, который соответствует этому языку ассемблера. Но это не является стандартом. любой может изобрести любой язык ассемблера и ассемблер, которые он хочет для этой архитектуры, при условии, что он генерирует машинный код (хорошо, если он хочет, чтобы он был полезен, он мог создать случайный мусор и вызвать его сбой, если это является его целью).
Форматы Intel и AT & T хорошо известны для разных языков ассемблера для одного и того же семейства процессоров. но люди, которые делают порты ассемблера gnu, как правило, портят исходный язык ассемблера. Главным образом директивы, части, не являющиеся инструкциями языка ассемблера, являются частями, которые могут варьироваться от одного ассемблера к другому. Опять же, вы можете сесть и сделать свой собственный, и придумать любой синтаксис, какой захотите, пока ваш ассемблер и / или компилятор создает рабочий машинный код для этой цели.
Так как вам действительно нужен ассемблер для разработки и тестирования нового набора инструкций... у вас есть ассемблер... При переносе компилятора или языка автору, который не должен сходить с ума, читая двоичный машинный код, они могут просто вывести Затем на языке ассемблера появляется ассемблер. Это чрезвычайно распространенный способ сделать это, но некоторые компиляторы переходят прямо к машинному коду по разным причинам. JIT, или "только потому, что я могу".