Рубрика «c++» - 21
Как я портировал DOS игру
2021-09-15 в 6:17, admin, рубрики: Bedlam 2, C, c++, dos, ассемблер, реверс-инжинирингЛюбопытные извращения из мира IT, или зачем мы JS в C++-код вкомпилили
2021-09-14 в 20:06, admin, рубрики: Blink, c++, javascript, svg, ttf, V8, браузеры, ненормальное программирование, Программирование, С++Осваиваем новую базу кода: анализируем программу nginx
2021-09-12 в 10:00, admin, рубрики: c++, nginx, ruvds_перевод, Блог компании RUVDS.comВ разработке nginx
участия я никогда не принимал, так как мой навык работы в Си находится где-то на уровне 1/10. Однако меня не страшит идея скачать исходный код, разобрать его, скомпилировать и запустить. Цель этой статьи помочь и вам преодолеть собственный страх проделать то же самое. Читать полностью »
Создаем новое ключевое слово в C++
2021-09-04 в 16:37, admin, рубрики: c++, clang, LLVM, КомпиляторыC++ - один из языков, который можно назвать "легендарным". Его история насчитывает несколько десятилетий, принципы программирования на нем революционным образом менялись не раз, а черновик стандарта уже разросся до 1800+ страниц мелкого шрифта.
Создание контроллера вторичных часов “Воронеж”
2021-08-30 в 9:00, admin, рубрики: arduino, c++, diy или сделай сам, ruvds_статьи, Блог компании RUVDS.com, ненормальное программирование, программирование микроконтроллеров, сигналы, Часы, часы воронежМногие из вас на предприятиях и иных объектах бывшего СССР встречали зелёные сегментные часы. Были самостоятельные устройства, типа “Электроника-7”, но так же существовали и вторичные, как в предыдущем посте, только более сложного строения — часы семейства “Воронеж”. Они также включались в единую часовую сеть предприятия и показывали то время, которое передавалось от главных первичных часов по проводам.
Решил разобраться, как же это работало, и самостоятельно собрать первичные часы. Из-за отсутствия документации, информации по данной теме, а также живых первичных часов — это превратилось в настоящий квест, реверс-инжиниринг, навязчивую идею, боль страдание и бессонные ночи с кодом и осциллографом в обнимку.
Тем не менее, я смог их победить, и могу теперь рассказать, как же они работают и поделиться кодом своего проекта.Читать полностью »
Пишем дизассемблер виртуальной машины из игры Clock Tower (PS1-PC) для IDA Pro
2021-08-20 в 5:27, admin, рубрики: C, c++, disassembler, ida pro, дизассемблер, Программирование, разработка игр, реверс-инжиниринг, хоррорыВсем привет. Тут такое дело: ещё одна моя реверсерская мечта сбылась - я написал процессорный модуль для IDA Pro с нуля, за два дня! Если вы когда-то тоже хотели написать свой модуль, но боялись начать - думаю, моя статья сможет помочь.
В качестве кода, который требуется дизасемблировать, будет выступать код виртуальной машины из очень крутого хоррора, который выходил сначала на SNES, потом на PS1, PC и Wonderswan - "Clock Tower - The First Fear". В игре имеется 9 концовок (sic!), атмосфера гнетущая, а в качестве главного злодея выступает "Scissorman" (человек с руками-ножницами). Заинтересовал? Тогда добро пожаловать...Читать полностью »
V8 в бэкенде С++: от одного JS-скрипта до фреймворка онлайн-вычислений
2021-08-17 в 6:50, admin, рубрики: c++, javascript, V8, Анализ и проектирование систем, Блог компании Яндекс, высокая производительность, команда яндекс.такси, Проектирование и рефакторингДинамическая JIT компиляция С-С++ в LLVM с помощью Clang
2021-08-15 в 6:55, admin, рубрики: C, c++, clang, jit, JIT-компилятор, LLVM, llvm ir, Блог компании TIMEWEB, Компиляторы, ПрограммированиеПри создании компилятора для собственного языка программирования я сделал его как транспайлер в исходный код на С++, вот только реализация сильно подкачала. Сначала приходится генерировать динамическую библиотеку с помощью вызова gcc, который и сам по себе не очень быстрый, так еще его может и не быть на целевой машине, особенно на другой платформе (например Windows). Конечно, для первых экспериментов и такой реализации было достаточно, но сейчас, когда я начал готовить код компилятора к публикации, стало понятно, что текущий вариант с фоновым запуском gcc никуда не годится.
Из-за этого, я решил не откладывать перевод компилятора на использование LLVM, который планировался когда нибудь в будущем, а решил сделать это уже сейчас. И для этого нужно было научиться запускать компиляцию C++ кода с помощью библиотек Clang, но тут вылезло сразу несколько проблем.
Оказывается, интерфейс Clang меняется от версии к версии и все найденные мной примеры были старыми и не запускались в актуальной версии (Сlang 12), а стабильный C-style интерфейс предназначен для парсинга и анализа исходников и с помощью которого сгенерировать исполняемые файлы не получится*.
Дополнительная проблемой оказалось, что Clang не может анализировать файл из памяти, даже если для этого есть соответствующие классы. Из объяснений выходило, что в экземпляре компилятора проверяется, является ли ввод файлом**.
А теперь публикую результат своих изысканий в виде рабочего примера динамической компиляции С++ кода с последующей его загрузкой и выполнением скомпилированных функций. Исходники адаптированны под актуальную версию Clang 12. Пояснения к коду я перевел и дополнил перед публикацией, а ссылки на исходные материалы приведены в конце статьи.
- *) Кажется в 14 версии планируется реализовать C интерфейс для генерации исполняемых файлов.
- **) На самом деле, Clang может (или теперь может) компилировать файлы из оперативной памяти, поэтому в исходники я добавил и эту возможность.
Книги о цифровой обработке сигналов и звуковом синтезе
2021-07-11 в 10:18, admin, рубрики: c++, dsp, Аудиомания, Блог компании Аудиомания, звук, книги, музыкальное программирование, Программирование, цифровая обработка сигналов, Читальный залНа прошлой неделе мы представили подборку литературы для тех, кто желает «погрузиться» в поиск музыкальной информации (MIR). Сегодня — представим материалы о цифровой обработки сигналов и акустических плагинов.
Designing Audio Effect Plug-Ins in C++
Фильтр Калмана: разбор навигационной системы БПЛА + исходный код
2021-07-10 в 11:32, admin, рубрики: c++, Sensor fusion, unity, Алгоритмы, беспилотники, беспилотные летательные аппараты, инерциальное счисление, квадрокоптер, математика, математическое моделирование, Навигация робота, робототехника, симулятор квадропоптера, фильтр калманаВ статье я бы хотел объяснить принципиальную разницу между Фильтром Калмана (ФК) и классическими фильтрами, кратко рассмотреть преимущество выбранного ФК поделиться опытом использования данного ФК во встраиваемой системе квадрокоптера для навигации на основе инерциального и ГНСС датчиков и поделится исходным кодом с демкой для самостоятельного изучения.