Записная книжка разработчика

Мои проекты

Книга C Maxfield "FPGAs: Instant Access"

| Comments

Прочитал книгу C Maxfield “FPGAs: Instant Access”, 216 стр., англ. язык. Хорошее введение в предмет, но только общие слова, без конкретики, без примеров кода, без описания конкретных FPGA. Подойдёт для первого знакомства с предметом, однако лично мне хочется чего-то более основательного.

Книга Michael Barr and Anthony Massa "Programming Embedded Systems"

| Comments

Прочитал книгу Michael Barr and Anthony Massa “Programming Embedded Systems, Second Edition”, 288 стр., англ. язык.

В целом, не понравилось. Ничего нового не узнал, всё очень поверхностно и совсем для начинаюших.

Книга " the Architecture of Open Source Applications" под ред. Amy Brow

| Comments

Прочитал главу 11 (LLVM, Chris Lattner), 15 стр, англ. язык.

Книга “The Architecture of Open Source Applications” содержит краткое описание множества open-source продуктов, включая LLVM. Автор главы про LLVM даёт описание архитектуры системы, уделяя особое внимание преимуществам LLVM перед другими open-source компиляторами. Также рассматриваются различные необычные применения LLVM, например, в системе обработки изображений.

Книга Suyog Sarda and Mayur Pandey "LLVM Essentials"

| Comments

Прочитал книгу Suyog Sarda, Mayur Pandey “LLVM Essentials”, 166 стр., англ. язык.

Ничего нового для себя не почерпнул, книга очень маленькая, но если вы решили начать изучение инфраструктуры компиляторов LLVM, то эта книга может дать некоторое начальное представление.

Книга А. Ахо, М. С. Лам, Р. Сети, Д. Ульман "Компиляторы: принципы, технологии и инструментарий"

| Comments

Легендарная “Книга дракона”, 2-е издание, русск. язык, 1184 стр.

В книге излагается теория построения компиляторов, начиная от разбора исходников (токенайзер, лексер, парсер), до оптимизации машинного кода. Однако, в книге, несмотря на большой объём, я не нашёл некоторых важных вещей, например, нет ни слова про SSA-форму. А именно представление программы в SSA-форме может сделать очень эффективными многие алгоритмы оптимизации и генерации машинного кода.

А в целом полезная книга, конечно, классика IT-литературы, всё-таки.

Книга Gabriel S. Hjort Blindell "Survey on Instruction Selection"

| Comments

Прочитал книгу Gabriel S. Hjort Blindell “Survey on Instruction Selection”, 139 стр, англ. язык. Книга про то, как осуществляется одна из самых важных стадий работы компилятора, выбор инструкций. Рассмотрены различные подходы и алгоритмы решения этой задачи, от первых компиляторов 1950-х годов до современных.

Немного написано и про алгоритм, используемый в LLVM. К сожалению, ничего особенно нового эта информация мне не дала. Этот участок компилятора весьма сложен, и возможности для ручного вмешательства в его работу очень ограничены (хотя и существуют).

Книга Steven W. Smith "the Scientist and Engineer’s Guide to Digital Signal Processing"

| Comments

Steven W. Smith “The Scientist and Engineer’s Guide to Digital Signal Processing”, 626 стр, англ. язык. Книга легально и бесплатно доступна для скачивания с сайта Analog Devices. Я читал эту книгу когда-то давно, но отдельными главами, а сейчас решил освежить в памяти ключевые моменты DSP.

Книга достаточно простая, и обходится абсолютным минимумом математических формул. Автор делает основной упор на то, чтобы читатель наглядно представлял себе, как связаны между собой различные преобразования, используемые в DSP: фильтрация, ДПФ, свёртка и т. п. В книге приведены основные алгоритмы DSP: фильтры, КИХ и БИХ, ДПФ прямое и обратное и некоторые другие. Таким образом, вы можете воспользоваться готовыми программами, переписать их на С или на ассемблере и не вдаваться глубоко в математику. Если интересна именно математика, лежащая в основе DSP, нужно читать Оппенгейма-Шафера.

Книга Chen Chung-Shu "Creating an LLVM Backend for the Cpu0 Architecture"

| Comments

Прочитал книгу Chen Chung-Shu “Creating an LLVM Backend for the Cpu0 Architecture”, 575 стр., англ. язык. Книга по LLVM, единственная в своём роде книга, детально описывающая процесс разработки бэкенда.

Я читал эту книгу ранее, но автор непрерывно вносит исправления и дополнения в текст (эта книга существует только в онлайновом виде), поэтому я решил перечитать всё полностью, с начала до конца, самый свежий вариант. Сейчас я могу сказать, что читал по LLVM всё, что опубликовано, и что имеет хотя бы немного существенное значение (можно также найти огромное количество статей в духе “мы разработали компилятор для нашего процессора, это круто”. Их я обычно не читаю). Источников по LLVM очень мало, печатных книг всего две, например.

Проблема ещё и в том, что все процессоры разные, и нельзя просто скопировать исходник одного бэкенда, подправить там пару строк и получить другой. Они настолько различны, что вряд ли вы вообще найдёте в двух разных бэкендах похожие куски кода. Поэтому чтение этой книги не заменит вам собственного опыта. Желающим разработать свой компилятор, я могу посоветовать следующее: не бояться разбираться в существующем коде, как бэкендов, так и Core Library. не бояться экспериментировать и писать с нуля собственные алгоритмы оптимизаций. не пытаться изобрести велосипед. Если нужные функции есть в Core Library, их необходимо изучить и использовать. Если, напротив, каких-то функций нет ни в Core Library, ни в других бэкендах, значит, скорее всего, вы хотите странного, и, скорее всего, на самом деле это вам не нужно. Хотя могут быть исключения из этого правила.

Книга Andrew Moore "FPGA for Dummies"

| Comments

Прочитал книгу Andrew Moore “FPGA for dummies”, 44 стр., англ. язык. Книжка совсем простая, конечно, и объясняет совсем базовые вещи, типа, что такое FPGA и зачем они нужны.