Как написать очень простой набор инструкций со следующими требованиями? - PullRequest
0 голосов
/ 19 марта 2019

Я очень плохо знаком с кодированием.Я пытаюсь понять, как написать набор инструкций, это очень просто.Требуются следующие основы: чтение, запись, сложение, вычитание, включение цикла / условная операция.Я пытался найти примеры кодов, онлайн, но безуспешно.Должен ли язык программирования быть машинным кодом или c?

1 Ответ

2 голосов
/ 19 марта 2019

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.

...