
Разработчики на C++ с самого начала изучают догмы о производительности: быстрый обратный квадратный корень, XOR‑обмен, Читать полностью »

Разработчики на C++ с самого начала изучают догмы о производительности: быстрый обратный квадратный корень, XOR‑обмен, Читать полностью »
Казалось бы, современный С++ дает столько возможностей… Давайте попробуем начать постигать всю эту необъятную мощь с написания Hello World:
#include <iostream>
int main(){ std::cout << "Hello World" << std::endl; }
Какой там сейчас последний компилятор… Давайте возьмем какой-нибудь GCC 15.2.0, запускаем компиляцию g++ -static -O2 hello.cpp -o hello.exe и… получили 2,30 МБ.
Что же пошло не так? Почему для отображения 11 символов понадобилось раздуть бинарник до >2МБ? Давайте разбираться.
Эххх... RDR 2... Проработанный сюжет, большой открытый мир, внимание к деталям — вот что гласили заголовки статей. И всё это умещается в 116 ГБ памяти. Всего лишь? Нет. Много. Ждать, блин, ещё несколько часов пока он загрузится. «Вот никуда это не годится!» — подумал я, и тут же мне пришла идея «утереть нос» этим студиям — создать игру не хуже, которая будет размером с игру для NES — 40 КБ! Это всё фантазии конечно, но вспомнить запылишийся C можно и даже нужно, времени еще полно. Ладно, долой вступление, берем C99, GCC 14.2.0 и вперед.
Начнем с основы основ: "Hello, world!". Создаем main.c:
Читать полностью »
Осторожно: помните ли вы, как в вашем телефоне Siemens, Motorola и Sony поселились маленькие программы - «эльфы»? В рамках этой статьи мы во всех деталях исследуем прошивку бюджетного кнопочника, разберемся в её архитектуре, хакнем и напишем загрузчик тех самых эльфов с MicroSD-флэшки. При этом я постараюсь объяснить всё максимально простым и доступным языком!
Недавно я познакомился с легендой форума allsiemens.ru — Ilya_ZXЧитать полностью »
Нет, это не шутка и не кликбейт. Такое действительно возможно - правда через небольшой хак.
Недавно я задался вопросом: а возможно ли написать для ARM нативную программу, которая будет бесшовно работать сразу на 4-х операционных системах без необходимости перекомпиляции для разных платформ и ABI. Мне очень хотелось реализовать возможность писать кроссплатформенные эльфы Читать полностью »
Стандарты языков C и C++ и их компиляторы стремительно развиваются, но далеко не все новинки становятся нам доступны сразу.
Эту статью я решил подготовить по случаю недавнего (25 апреля 2025) релиза компилятора GCC 15.1.0. В нем стали доступны для использования некоторые фичи из C++26.
К сожалению, текущая версия Ubuntu (24.04.2 LTS) изначально содержит достаточно старый GCC 13.3.0. Чтобы использовать что-то поновее, нужен "ручной" подход.
Дальнейший наш план таков. Мы установим новейшую версию GCC из исходников, настроим ее работу в системе по умолчанию и на пробу скомпилируем С++ код, использующий элементы стандарта C++26.
Никакое серьезное вычисление невозможно без чисел с плавающей запятой, но, как известно, стандарт RISC-V RV32I не содержит команд умножения и деления. Достаточно ли будет в софт-ядре реализовать стандарт RV32I, чтобы можно было вычислять что-то серьезное? В этой статье на примере RISC-V процессора YRV, описанного в книге Inside an Open-Source Processor, мы рассмотрим, как, используя компилятор GCC, рассчитать такие тригонометрические функции, как синус, косинус, тангенс, выведем на экран результат и даже нарисуем олдскульную синусоиду в VGA-режиме.


Меня давно интересовал вопрос, насколько сложно написать собственный загрузчик операционной системы. Я не говорю о простой программе, выводящей «Hello, World!», а о полноценном загрузчике, который передаёт управление от встроенного программного обеспечения компьютера ядру операционной системы. Современные загрузчики представляют собой сложные программы, способные загружать множество операционных систем различными способами, учитывая массу нюансов, связанных с программным и аппаратным обеспечением. Читая их исходный код, легко утонуть в деталях и потерять понимание сути и реализации.
Я решил начать изучение с максимально простого подхода, постепенно усложняя задачи, экспериментируя и получая новые знания. Если мне удалось вас заинтересовать, добро пожаловать под кат. Читать полностью »