Когда-то давно я смеха ради решил доказать обратимость процесса и научиться генерировать JavaScript (а точнее, Asm.js) из машинного кода. Для эксперимента был выбран QEMU, некоторое время спустя была написана статья на Хабр. В комментариях мне посоветовали переделать проект на WebAssembly, да и самому бросать почти законченный проект как-то не хотелось… Работа шла, но уж очень медленно, и вот, недавно в той статье появился комментарий на тему «Так и чем всё закончилось?». На мой развёрнутый ответ я услышал «Это тянет на статью». Ну, раз тянет, то будет статья. Может, кому пригодится. Из неё читатель узнает некоторые факты про устройство бекендов кодогенерации QEMU, а также как написать Just-in-Time компилятор для веб-приложения.
Рубрика «C» - 30
QEMU.js: теперь по-серьёзному и с WASM
2019-05-12 в 15:31, admin, рубрики: C, javascript, jit, qemu, qemu.js, tcg, wasm, webassembly, виртуализация, ненормальное программированиеУльтразвуковой GPS
2019-05-12 в 10:57, admin, рубрики: arduino, C, gps, open source, навигация, ультразвукУльтразвуковой GPS. Концептуальная модель
Перед тем как отправляться в столь долгое плавание стоит проверить, а так ли все реально сделать на коленке.
О чем эта статья: как быстро и недорого сделать простую ультразвуковую GPS.
Список необходимых устройств
- HC-SR04 3 шт.
- Arduino 1 шт.
- Моток проводов.
Концепция
Рис. 1 – Общая идея устройства
Читать полностью »
Как размеры массивов C стали частью двоичного интерфейса библиотеки
2019-05-10 в 6:46, admin, рубрики: abi, array, C, двоичный интерфейс, размер массиваБольшинство компиляторов C позволяют получить доступ к массиву extern
с неопределёнными границами, например:
extern int external_array[];
int
array_get (long int index)
{
return external_array[index];
}
Определение external_array может находиться в другой единице трансляции и выглядеть так:
int external_array[3] = { 1, 2, 3 };
Вопрос в том, что произойдет, если это отдельное определение изменится так:
int external_array[4] = { 1, 2, 3, 4 };
Или так:
int external_array[2] = { 1, 2 };
Калькулятор TI-89 Titanium и его программирование на C
2019-04-27 в 11:32, admin, рубрики: C, гаджеты, калькулятор, ПрограммированиеНе так давно на Хабре была статья про графический калькулятор TI-83, и,
поскольку я являюсь обладателем TI-89 Titanium — калькулятором следующего поколения от Texas Instruments, под катом я решил рассказать про него, и показать, как для этого калькулятора можно создавать свои собственные программы на С.
Cataclysm Dark Days Ahead, статический анализ и рогалики
2019-04-25 в 10:06, admin, рубрики: C, c++, Gamedev, open source, pvs-studio, static analysis, Блог компании PVS-Studio, разработка игр
Скорее всего, из названия статьи вы уже догадались, что в центре внимания ошибки в исходном коде. Но это вовсе не единственное, о чем пойдет речь в этой статье. Если кроме С++ и ошибок в чужом коде вас привлекают необычные игры и вам интересно узнать, что это такие за «рогалики» и с чем их едят, добро пожаловать под кат!
Читать полностью »
Разгон подсветки монитора
2019-04-23 в 6:50, admin, рубрики: avr, C, diy или сделай сам, overclocking, Здоровье гика, Подсветка дисплея, программирование микроконтроллеровОверклокинг процессора или памяти — это понятно, но зачем разгонять подсветку монитора?
Речь пойдёт о стареньком 23-дюймовом Samsung SyncMaster BX2340 (выпущен в январе 2011) со светодиодной подсветкой. Со временем стал замечать, что работать за ним утомительно, а сосредоточиться всё сложнее. И даже не только работать, просто читать, например. Сам монитор остался тот же, но мне стало труднее. А за другими экранами работалось вполне нормально.
Читать полностью »
Operating Systems: Three Easy Pieces. Part 4: Введение в планировщик (перевод)
2019-04-22 в 14:41, admin, рубрики: C, linux, инженерные системы, операционные системы, перевод с английского, системное администрирование, системное программированиеВведение в операционные системы
Привет! Хочу представить вашему вниманию серию статей-переводов одной интересной на мой взгляд литературы — OSTEP. В этом материале рассматривается достаточно глубоко работа unix-подобных операционных систем, а именно — работа с процессами, различными планировщиками, памятью и прочиими подобными компонентами, которые составляют современную ОС. Оригинал всех материалов вы можете посмотреть вот тут. Прошу учесть, что перевод выполнен непрофессионально (достаточно вольно), но надеюсь общий смысл я сохранил.
Лабораторные работы по данному предмету можно найти вот тут:
Другие части:
- Часть 1: Intro
- Часть 2: Абстрация: процесс
- Часть 3: Введение в API процессов
- Часть 4: Введение в планировщик
А еще можете заглядывать ко мне на канал в телеграм =)
Читать полностью »
Торфон – мобильное приложение для анонимной телефонии
2019-04-21 в 12:39, admin, рубрики: C, cryptography, Tor, voip, анонимность, блокировки, звук, криптография, Разработка систем связи, телефония, шифрованиеСегодня я хотел бы рассказать о результатах моих семилетних исследований в области передачи голоса через сеть Tor. Общепринятым является мнение, что голосовая связь через Tor почти невозможна:
- существующие транспортные протоколы для телефонии работают поверх UDP, а Tor обеспечивает лишь TCP соединения;
- Tor маршрутизирует пакеты через множество узлов, шифруя данные, что является причиной значительной латентности и делает дуплексную телефонную связь невозможной или крайне некомфортной.
Но так ли это на самом деле?
Читать полностью »
USB панель управления космическим кораблем своими руками
2019-04-19 в 9:08, admin, рубрики: C, custom hid, diy или сделай сам, gamepad, stm32, usb, Игры и игровые приставки, панель оператора, панель управления, программирование микроконтроллеров
Здравствуйте, дорогие читатели!
Пришла мне тут одна идейка, а не собрать ли пульт управления космическим кораблем. На USB. С нативной поддержкой драйверов. Custom HID. Чтобы воткнул и всё работает, без всяких танцев и бубнов. В итоге, получился некий монструозный «геймпад» для космических симуляторов. В общем, судите сами.
Читать полностью »