• Как программировать на машинных кодах?

    @guest2342
    Не думаю, что вам стоит писать интерпретатор команд ассемблера. Он как-раз и нужен для того, чтобы напрямую взаимодействовать с процессором компьютера, а интерпретатор влияет на скорость исполнения при каждом запуске кода.

    Язык ассемблера это просто текстовое представление команд машинного кода, и ассемблером (программа, которая переводит команды языка ассемблера в машинные коды) переводится сразу в него, минуя этап компиляции.

    Компиляция нужна для того, чтобы разбить более выскоуровневые команды на множество низкоуровневых, которые позже собираются в машинные коды.

    По аналогии с человеческими языками, ассемблер делает дословный перевод данных ему команд в их машинные экаиваленты, тогда как компилятор, сохраняя смысл входного высокоуровневого кода, не обязательно следует его структуре. Разработчик, который пишет программу на языке ассемблера, должен задумываться о каждой мелкой операции, которая производится его программой, такой как перемещение значения из одного регистра в другой, чтобы освободить место для следующей операции.

    Невозможно написать более простой диалект ассемблера для процессора, который работал бы на сложных современных процессорах, таких как серия x86, потому что тогда бы он протеворечил своему определению, "представление команд процессора в виде, доступном для чтения человеком." Вместо этого, рекомендую создать свой язык программирования с нуля, написав для него компилятор. Компилятор может быть написан на любом языке кроме интерпретируемых (python, javascript, php и т.д.) Наиболее частым выбором является C или C++. Компилятор открывает файл с программой, извлекает команды вашего языка и переводит их либо на язык ассемблера и потом собирается таким ассемблером как NASM, либо же сразу в машинный код.

    Также, выберите процессор, для которого вы пишете этот компилятор, например Intel 8080 (был в компьютерах Altair 8800), или 8086, с которым совместимы почти все процессоры Intel. Для x86 легко собирать файлы .COM под DOS т.к. для них не нужен линкер.
    Ответ написан
    Комментировать