Уведомления
Уведомления
Авторизуйтесь, чтобы оценивать посты, писать комментарии и создавать записи.

Низкоуровневое программирование

Статьи для всех, кто интересуется разработкой операционных систем и тонкостями байткода.

Алексей Грачев
Алексей Грачев

Подборка книг о компиляторах и обо всем, что с ними связано

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

Обложка: Подборка книг о компиляторах и обо всем, что с ними связано
Ярослав Сарницкий
Ярослав Сарницкий

«Шелл» на С: пишем командную оболочку для Unix

Многие считают, что сделать программу, которой будут пользоваться миллионы, очень трудно. Однако за любым, даже самым сложным, продуктом всегда стоит простая идея. Одним из них является командная оболочка, или «шелл». В этой статье мы расскажем, как написать упрощенную командную оболочку Unix на C.

Тарас Сереванн
Тарас Сереванн

Как создать свою операционную систему с нуля

Книга «Операционная система с 0 до 1» опубликована на GitHub и имеет более 2 000 звездочек и 100 форков. Как понятно из названия, прочитав её, вы сможете создать свою собственную операционную систему — и, пожалуй, мало что в мире программистов может быть круче.

Как работать с бинарными данными для создания своего собственного формата файлов

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

Обложка: Как работать с бинарными данными для создания своего собственного формата файлов

Хитрости с битовыми операциями

Нашли и оформили подборку различных хитрых приёмов с битовыми операциями. С основами битовых операций также можно ознакомиться в нашей статье. Если вы знаете какие-то трюки, которые не вошли в этот список, делитесь ими в комментариях! 

Руководство по созданию ядра для x86-системы. Часть 2. Система ввода / вывода

В прошлой статье я писал о том, как создать простейшее x86-ядро, использующее GRUB, работающее в защищённом режиме и выводящее на экран строку. В этот раз мы подключим к ядру драйвер клавиатуры, который может считывать символы a–z и 0–9 с клавиатуры и выводить их на экран. Весь используемый код можно найти на GitHub. 

Обложка: Руководство по созданию ядра для x86-системы. Часть 2. Система ввода / вывода

«Гарантия корректности» как методика обхода багов

Вам когда-нибудь приходилось гарантировать корректность выполнения своей программы? На самом деле это большой объем работы, который не всегда возможно выполнить. В самих доказательствах могут быть ошибки, об этом говорится и в мудрости, взятой из Дао программирования:

Обложка: «Гарантия корректности» как методика обхода багов

Викторина: проведет ли компилятор GCC эти оптимизации?

Посмотрим, как хорошо вы знаете способности GCC оптимизировать код. Эта викторина содержит 6 вопросов, в каждой по две вставки кода. Первая вставка иллюстрирует код до некой оптимизации, вторая — после нее. Сможет ли GCC изменить первый код таким образом, чтобы он стал вторым? Верна ли вообще проведенная оптимизация (быстрее ли второй код первого)?

Советы по языку программирования Си: 10 полезных приемов

Си --- это один из самых важных и широко распространённых языков программирования. Его можно использовать не только для общих целей, но и для написания низкоуровневых программ, работающих с "железом". Си позволяет программисту многое из того, чего не позволяют другие языки. Однако в этом кроется как сильная, так и слабая сторона языка: можно писать высокопроизводительный код,…

Обложка: Советы по языку программирования Си: 10 полезных приемов
Иван Бирюков
Иван Бирюков

В Сети появилась серия статей-руководств по созданию собственной ОС на ассемблере и Rust

Предлагаем вашему вниманию серию англоязычных статей, опубликованную в блоге Филиппа Опперманна. В ней подробно разбирается процесс разработки собственной 64-битной ОС на ассемблере и Rust. Серия пополняется, но на основе уже написанных статей можно написать достаточно функциональную операционную систему.

Александр Курилкин
Александр Курилкин

Важность C при обучении программированию

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

Хитрости с битовыми операциями на примере языка Си

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

Структура исполняемого файла Windows

Иногда полезно знать, что находится в бинарнике вашей программы, и во что превращается исходный код во время компиляции. На этой диаграмме показана структура исполняемого фала Windows, также известного как Portable Executable (PE).

Оператор GOTO в Python

Оператор GOTO не ругал только ленивый. Тем не менее, это инструмент, и польза или вред от него определяется только тем, как его используют.

Сравнение интерпретатора, обычного и JIT компиляторов

Интерпретаторы и компиляторы --- программы, которые используются для трансляции или запуска других программ. Интерпретируемые программы пишутся на языках вроде JavaScript, Ruby, Python, PHP и Perl. Программы, которым требуется компиляция --- на C, C++ и, в какой-то степени, Java и C#.

Оптимизация в GCC — ответы на вопросы викторины

В этой статье даны ответы на 6 вопросов из викторины по оптимизациям компилятора GCC. В каждом по две вставки кода. Первая вставка иллюстрирует код до некой оптимизации, вторая --- после нее. Сможет ли GCC изменить первый код таким образом, чтобы он стал вторым? Верна ли вообще проведенная оптимизация (быстрее ли второй код первого)?

Спящий кот

Увы, но нам не удалось найти больше постов