Imax9
NEWS   ARTICLES   MINIMIG   FILES   ABOUT

Ассемблер - это все очень хорошо…

Предлагаю вам перевод цикла The EightThirtyTwo ISA Part 5: Assembly language is all very well… автора Alastair M. Robinson.

Прежде чем продолжить работу с дизайном EightThirtyTwo, я хотел бы иметь какой-то способ генерации кода для него с языка более высокого уровня, просто чтобы лучше понять, какие инструкции полезны для компиляторов, какие будут редко неиспользуемы и где я могу найти какие-либо пробелы, которые делают сгенерированный код излишне неуклюжим. Самый очевидный путь к этой цели-найти компилятор языка Си, который можно легко перенастроить на новую архитектуру. (Любой, кто пытался сделать это раньше, вероятно, сейчас смеется над моим употреблением слова "легко"!)

Мои предубеждения при старте заключались в том, что у меня есть два варианта: GCC и LLVM (это оказалось очень далеко от истины) – и что с последним будет легче работать. Находясь в идеальном мире у меня была бы поддержка GCC, я знаю, работая с toolchain ZPU, что это быстрый путь к цели, и если поддержка архитектуры не обновляется, она, как правило, страдает от медленной деградации становится трудной для построения с развитием экосистемы. Так что на данный момент я не учитываю GCC.

Я еще не изучал LLVM вообще, но это вполне может оказаться долгосрочным решением. Однако сейчас мне хотелось чего-нибудь попроще. Оказывается, на самом деле существует целый ряд других компиляторов языка Си – некоторые из них я никогда не слышал, некоторые из них я знаю давно, и вполне возможно, многие я еще не нашел. Я искренне удивлен тем, как много вариантов существует!

В прошлом я использовал VBCC, так как это широко используемый и популярный компилятор для запуска на Amiga, но ранее я не изучал его возможности генерации кода. Начать работу невероятно легко – нет необходимости редактировать Makefiles или заголовки – просто скопируйте существующий бэкэнд, введите make TARGET=<newtarget>, и у вас будет новый компилятор. Существует даже “универсальный risc” бэкэнд, который служит идеальной отправной точкой. Документация тоже хорошая.

[На данный момент я также должен почетно упомянуть ArchC – если позволит время, я обязательно изучу его позже. По-видимому, это основа для исследований ISA с инструментами, которые автоматически создают симуляторы, ассемблеры на основе binutils и компиляторы на основе clang для моделей процессоров. Очень интересный материал, который стоит исследовать, но слишком глубокая кроличья нора для настоящего времени.]


Адрес для контактов : imax9@narod.ru

Если вам понравились мои работы и вы желаете поддержать сайт - сделайте дотацию.

При копировании статьи – обязательна ссылка на авторство и источник. Без разрешения автора копирование запрещено.

© Максим Ильин 2022г.

Яндекс.Метрика