ISA является языком программирования. Программы машинного кода.
ISA - это набор правил для того, что именно происходит с архитектурным состоянием машины при выполнении каждой возможной инструкции. например двоичная 0101 xxyy
может быть 2-операндной add x,y
инструкцией, где xx
является 2-битным номером регистра назначения, а yy
является номером регистра источника. ISA будет включать правила установки флагов, если у вас есть регистр флага / кода состояния.
Вы не пишете ISA на другом языке программирования.
Вы можете спроектировать аппаратное обеспечение процессора, которое реализует ISA (например, в Verilog или VHDL, я думаю). Вы даже можете смоделировать этот дизайн, запустив программу, написанную в машинном коде для вашего нового ISA.
Вы также можете написать эмулятор интерпретации для этого ISA, например, на C, который моделирует архитектурное состояние машины в переменных C и массив для памяти. Программа будет читать машинный код и декодировать инструкции. Обычно вы сначала разрабатываете ISA, а затем внедряете для него эмулятор.
Другим полезным инструментом является ассемблер, который переводит текст в машинный код для вашего ISA. Текстовая мнемоника для инструкций и имен текстовых регистров существует только в источнике asm.
Обычно ISA это тоже стандартизирует, так что можно говорить о машинном коде, но совсем не обязательно иметь язык ассемблера как часть ISA. Вы можете оставить на усмотрение пользователей ISA составление имен регистров и мнемоник, а также синтаксиса исходного кода asm для вашего ISA.