Никакое серьезное вычисление невозможно без чисел с плавающей запятой, но, как известно, стандарт RISC-V RV32I не содержит команд умножения и деления. Достаточно ли будет в софт-ядре реализовать стандарт RV32I, чтобы можно было вычислять что-то серьезное? В этой статье на примере RISC-V процессора YRV, описанного в книге Inside an Open-Source Processor, мы рассмотрим, как, используя компилятор GCC, рассчитать такие тригонометрические функции, как синус, косинус, тангенс, выведем на экран результат и даже нарисуем олдскульную синусоиду в VGA-режиме.
Рубрика «gcc»
Cтандарт RISC-V RV32I и математика с плавающей точкой
2025-03-25 в 11:49, admin, рубрики: gcc, r32l, risc-vПроизводительность интерпретатора Python 3.14 с оптимизацией хвостовых вызовов
2025-03-17 в 13:01, admin, рубрики: clang, cpython, gcc, ruvds_переводы, байт-код, бенчмарки, интерпретаторы
Примерно месяц назад проект CPython смерджил новую стратегию реализации интерпретатора байт-кода. Первоначальные результаты были очень впечатляющими, продемонстрировав среднее повышение производительности на 10-15% в широком спектре бенчмарков на различных платформах.Читать полностью »
Пишем свой загрузчик операционной системы Linux
2025-03-06 в 9:01, admin, рубрики: gcc, linux, ruvds_статьи, UEFI, загрузка ос, загрузчик, системное программирование
Меня давно интересовал вопрос, насколько сложно написать собственный загрузчик операционной системы. Я не говорю о простой программе, выводящей «Hello, World!», а о полноценном загрузчике, который передаёт управление от встроенного программного обеспечения компьютера ядру операционной системы. Современные загрузчики представляют собой сложные программы, способные загружать множество операционных систем различными способами, учитывая массу нюансов, связанных с программным и аппаратным обеспечением. Читая их исходный код, легко утонуть в деталях и потерять понимание сути и реализации.
Я решил начать изучение с максимально простого подхода, постепенно усложняя задачи, экспериментируя и получая новые знания. Если мне удалось вас заинтересовать, добро пожаловать под кат. Читать полностью »
Упрощаем «простой» ELF
2025-01-12 в 9:01, admin, рубрики: elf, gcc, ruvds_перевод, ассемблер, Программирование, Си
Давайте-ка напишем простую программу для Linux. Насколько трудной она может быть? Только тут надо учесть, что простота противоположна сложности, но не трудности*, и создать нечто простое на удивление трудно. А что останется, если избавиться от сложности стандартной библиотеки, всех современных средств безопасности, отладочной информации и механизмов обработки ошибок?Читать полностью »
Как создать собственное расширение компилятора C++
2024-12-29 в 17:48, admin, рубрики: c++, clang, gcc, pluginЭто перевод статьи, которая, к сожалению, у меня не доступна без слова из трех букв. А так как тема довольно интересная, то я решил совместить полезное с полезным и не только самому покопаться с примерами из публикации, но и сделать её перевод на Хабре. Вдруг еще кому данный материал будет интересен?
Создание пользовательского расширения компилятора C++ подразумевает понимание базовых механизмов работы компиляторов, изменение или расширение их функциональности и бесшовную интеграцию этих изменений в существующую инфраструктуру компилятора. Это руководство проведет вас через весь процесс, от понимания основ до внедрения и тестирования вашего пользовательского расширения. Целевая аудитория этого руководства — разработчики, которые уже знакомы с C++ и имеют базовое понимание концепций компилятора.
Развенчиваем популярные мифы и заблуждения о компиляторах
2024-12-16 в 13:01, admin, рубрики: clang, gcc, intermediate representation, ir, LLVM, ruvds_переводы, оптимизация кода, оптимизирующий компилятор
▍ Введение
Компиляторы всегда были окружены аурой загадочности и магии. Из-за этого многие из нас верят, что они делают то, чего они не делают, или что они не делают того, что делают1
Эта статья станет своего рода продолжением статьи о компиляторных оптимизациях. Я перечислю некоторые заблуждения, с которыми я сталкивался за долгие годы (многие из них были моими), и постараюсь развеять все мифы. Заранее скажу, что эта статья посвящена только крупным популярным компиляторам общего назначения наподобие LLVM, GCC и ICX. Некоторые из сделанных здесь утверждений не относятся, например, к специализированным компиляторам2, а также к мелким и средним компиляторам3.Читать полностью »
Ричард Столлман, автор GCC и Emacs
2024-11-18 в 9:01, admin, рубрики: emacs, gcc, gdb, gmake, GNU, GNU Compiler Collection, GNU Debugger, GNU Make, GPL, linux, richard stallman, rms, ruvds_статьи, TMS, truth maintenance, копилефт, Линус Торвальдс, отмена, поддержание истины, ричард столлман
Сложно найти человека, про которого ходит больше легенд, чем Ричард Столлман (RMS). Наверное, по количеству невероятных историй и анекдотов с ним может сравниться только Джефф Дин.
Причём многие невероятные истории о Столлмане — правда. Например, что он запрашивал веб-страницы wget-демоном по почте (для безопасности) и отказался от использования мобильных телефонов, которые называет портативными устройствами слежения. На своём переделанном ноутбуке Thinkpad x200 он в основном работает в консоли и старается не подключаться к веб-сайтам с собственной машины.
В 71 год Столлман борется с раком (успешно) и пострадал от травли за свои спорные высказывания и действия. Но его достижений хватит на десятки или сотни великих жизней. Он является автором компилятора GCC и текстового редактора Emacs, а также основателем проекта GNU, дополнением к которому стало ядро Linux, в результате чего появилась полноценная ОС.
Гений Столлмана опередил время. Только в 21 веке — с ползучим наступлением цифрового тоталитаризма, всеобщей слежки в духе «1984» и алгоритмизацией всех аспектов жизни — люди постепенно начинают понимать, что Ричард Столлман был прав.
Читать полностью »
Логирование FreeRTOS через Virtual Com Port
2024-11-03 в 19:47, admin, рубрики: arm-none-eabi, freertos, gcc, library, logging, multithreading, qemu, stm32, stm32cubemxВведение
Встроенные системы на базе микроконтроллеров STM32 широко применяются в различных областях — от бытовой электроники до промышленного оборудования и IoT-устройств. Одной из ключевых задач при разработке таких систем является отладка и мониторинг работы приложений. Эффективное логирование существенно облегчает эти процессы, позволяя разработчикам быстро выявлять и устранять ошибки, а также анализировать поведение системы в реальном времени.
Я ускорил генерацию blurhash в 3̶6̶ 8̶7̶ 128 раз
2024-10-11 в 21:44, admin, рубрики: blurhash, clang, compilers, gcc, pillow, simdСтарую собаку новым трюкам не обучишь, вот и я взялся за старое. Blurhash — это компактный способ представления размытой превьюшки изображения в виде ASCII-строки. Разработан финской компанией Wolt (аналог Delivery Club). Давно хотелось внедрить такое к себе в API, чтобы любой клиент мог более плавно и изящно делать загрузку контент на своем сайте. Но сколько я на него смотрел — всегда не давала покоя скорость работы, уж больно медленно и «в лоб» он был написан. Но вот время пришло наконец-то разобраться, что же он так медленно работает.
Насекомое 13 лет сидит в вашем компиляторе и не собирается оттуда вылезать
2024-07-08 в 11:29, admin, рубрики: c++, gcc, компиляторПредставим, что у вас идеальный проект. Таски пилятся, компилятор компилирует, статические анализаторы анализируют, релизы релизятся. В какой‑то момент вы принимаете волевое решение открыть древний файл, в который никто не залезал уже много лет, и видите, что он в кодировке Windows-1251. При том, что весь проект уже давно перешёл на UTF-8. «Непорядок!» — думаете вы, и лёгким движением руки меняете кодировку. На следующий день на вашем тестовом сервере случается локальный апокалипсис. Думаете, такого не может быть? Тогда предлагаю это обсудить.