Как аппаратное/программное обеспечение ассемблера реализовано в процессоре?

Я энтузиаст компьютерного дизайна, работающий с симулятором Logisim для создания процессоров с нуля (из логических элементов). Я успешно собрал работающий ЦП, который имеет набор инструкций, аналогичный процессору MOS 6502. ЦП понимает только машинный код. Мой вопрос, и я клянусь, что много исследовал: как реализовать язык ассемблера в ЦП? Какое оборудование требуется или это чисто программное обеспечение? Я предполагаю, что вам нужно реализовать базу данных с буквами, а также какой-то декодер, который будет читать ваш письменный язык ассемблера и переводить его на машинный язык, готовый к выполнению. Нигде не нашел внятного ответа на свой вопрос. Любое руководство очень ценится.


person Senijs    schedule 18.03.2019    source источник
comment
Вы понимаете, что процессор не может выполнять язык ассемблера, верно?   -  person Sneftel    schedule 19.03.2019
comment
Язык ассемблера в основном 1: 1 с инструкциями, которые выполняет процессор, поэтому, если вы посмотрите руководство для процессора, вы увидите инструкции и соответствующий эквивалент языка ассемблера. Конечно, это не так просто, но, по сути, язык ассемблера — это первый шаг от единиц и нулей двоичного кода, который процессор действительно понимает.   -  person barny    schedule 19.03.2019
comment
Вы предварительно конвертируете язык ассемблера в машинный язык, запуская его через ассемблер. Как написать один, выходит за рамки SO-ответа, но простые варианты иногда доступны в материалах академического курса (или даже включены в лучшие программы мониторинга отладки для запуска на цели), в то время как более причудливые могут вычислять положение символов и потенциально реализовывать макросы могут быть более крупными частями программного обеспечения. Учитывая историческое использование 6502, у вас не должно возникнуть особых проблем с поиском небольшого ассемблера.   -  person Chris Stratton    schedule 19.03.2019
comment
Но что тогда он делает? В этом должен быть задействован процессор ... какое оборудование выполняет язык ассемблера? Или весь ассемблер написан как ПО в памяти?   -  person Senijs    schedule 19.03.2019
comment
Аппаратное обеспечение не выполняет язык ассемблера, оно выполняет вывод машинного языка ассемблера.   -  person Chris Stratton    schedule 19.03.2019
comment
Понимаю. Итак, аппаратное обеспечение, которое я на самом деле ищу, это ассемблер. Крис Страттон, что именно вы подразумеваете под учебными материалами курса по созданию простого ассемблера (для 6502)?   -  person Senijs    schedule 19.03.2019
comment
@Senijs: Ассемблер — это программное обеспечение, которое работает на ЦП и переводит текст в машинный код. Что касается процессора, то в ассемблере нет ничего особенного, никакой специальной поддержки для него. Первый ассемблер должен был быть написан вручную в машинном коде, чтобы он мог работать на ЦП, но более поздние ассемблеры для более поздних ЦП могли разрабатываться совместно. См. также Как был написан первый ассемблер для новой платформы домашнего компьютера?   -  person Peter Cordes    schedule 19.03.2019
comment
@PeterCordes, спасибо за ссылку. Я хочу написать ассемблер вручную в машинном коде, вероятно, мне следовало упомянуть об этом в своем вопросе. Хотя кажется, что это был бы огромный код для написания. Я хотел бы увидеть любые примеры таблиц данных ассемблера или процесс их создания.   -  person Senijs    schedule 19.03.2019
comment
У ассемблеров нет спецификаций, это программное обеспечение. Может быть, вам нужен справочник 6502 ISA, в котором перечислены кодировки каждой инструкции? И да, они не малы даже для простой компактной ISA типа 6502. ИДК, почему вы хотите написать один вручную в машинном коде, а не на ассемблере 6502 (а затем собрать его в машинный код 6502, используя существующий 6502 ассемблере на другом компьютере.) Или проще, C или C++, или еще более высокоуровневый язык, который по-прежнему позволяет легко обрабатывать битовые поля и байты.   -  person Peter Cordes    schedule 19.03.2019
comment
Также Были ли первые ассемблеры написаны в машинном коде? и другие ссылки, которые вы найдете в связанных дубликатах этого вопроса, а также прямые ответы.   -  person Peter Cordes    schedule 19.03.2019
comment
@PeterCordes, да, я полагаю, что лучше написать ассемблер на более высоком языке, а затем перевести его в мой машинный код. Извините за повторяющийся вопрос, я действительно хотел найти быстрый ответ на свой вопрос и ничего не смог найти ... Теперь я знаю, что ассемблер - это в значительной степени чистое программное обеспечение, требующее тонны кода.   -  person Senijs    schedule 19.03.2019
comment
Скажем, ASCII-символы тоже пишутся чисто в память? Так же, как ассемблер?   -  person Senijs    schedule 19.03.2019
comment
Я знаю, что компьютеры с самого начала используют машинный код для создания сложных языков, символов и т. д. Но спасибо за все ваши ответы.   -  person Senijs    schedule 19.03.2019
comment
Символы ASCII не существуют с точки зрения аппаратного обеспечения. С точки зрения аппаратного обеспечения есть такие вещи, как восемь бит на байт, последовательное хранение байтов в виде оперативной памяти, которая может быть прочитана/записана ЦП с использованием адреса + шины данных и контроллера памяти, внутренней памяти ЦП (регистров) и т. д. об ASCII или символах. Дальше всего аппаратное обеспечение может добраться до ASCII — это некоторые графические карты, которые обеспечивают какой-то текстовый режим, что означает, что они интерпретируют содержимое буфера видеокадра как некоторый индекс в графике шрифта, где определенные глифы могут быть расположены естественным образом для ASCII. ..   -  person Ped7g    schedule 19.03.2019
comment
Поэтому, если у вас есть программа типа print("hello world"), она преобразует 8-битные целые числа, такие как 104 (буква h в кодировке ASCII), во все, что необходимо графической карте для отображения пикселей, формирующих форму h на экране. На некоторых графических картах и ​​их выбранном режиме отображения это может быть столь же тривиально, как запись значения 104 в видеопамять текстового режима (возможно, с некоторым дополнительным байтом, описывающим цветовые атрибуты), на некоторых других может потребоваться отрисовка отдельных пикселей в несколько растровых плоскостей в форма h, т.е. также данные шрифта и т. д.. сотни инструкций для одной буквы.   -  person Ped7g    schedule 19.03.2019