войти зарегистрироваться

AssemblerМинималистичная программа в формате ELF из песочницы

Вдохновившись статьёй Привет из свободного от libc мира, я так же решил проделать нечто подобное. Чтобы не заниматься этим бесцельно, я решил поставить перед собой следующую задачу. Сделать программу, выводящую какую-нибудь простую строку, вроде «ELF, hello!». Разобраться с тем, как именно она будет представлена в исполняемом файле. Ну и попутно, постараться уложиться в 100 байт.

AssemblerОптимизация длинной арифметики на C++


С Новым годом! Опишу классический сюжет — оптимизацию длинной арифметики в C++ при помощи ассемблерных вставок. Однако, на Хабре его еще не было, поэтому после некоторых колебаний решил запостить сюда, вы уж простите, если сами когда-то писали то же самое и продвинулись дальше меня :-)

C++C/C++ Создание своих библиотек на gcc из песочницы

Ниже описанное в принципе является общеизвестным, тем не менее надеюсь, что пост облегчит кому-нибудь жизнь. Так же хочу оговориться, что пост ориентирован на пользователей linux, хотя с небольшими изменениями может быть использован и на других платформах.

Под катом я объясню как создать свою динамическую библиотеку, и как подключить ее к своим проектам. Так же будет немного информации о статических библиотеках.

Ненормальное программированиеПишем двуязычную программу из песочницы

Недавно передо мной встала нелёгкая задачка, которую мне подкинул один знакомый. Суть состоит в том, чтобы, написав один исходник, можно было его скомпилировать в gcc и исполнить, также и исполнить через интерпретатор perl. Казалось бы, не так уж и сложно, но не всем программистам придёт в голову, как правильно написать данный исходник. Приступим к рассмотрению изначальных программ на C и Perl.

Персональные блоги GNU Compiler Collection, первые шаги из песочницы

Эта заметка призвана на простых примерах познакомить начинающего nix-разработчика с инструментами GNU, в частности с компилятором GCC.

Open sourceКак свободное ПО способствовало успеху Стива Джобса и Apple

Все мы отмечаем успешную карьеру Стива Джобса и благодарны ему за огромные улучшения в компьютерных интерфейсах и электронных устройствах. Он просто великолепен. Но в то же время Apple — централизованная, контролируемая организация с жёстким надзором за App Store и анонсами новых продуктов. Скрытая причина того, что сейчас недовольные пользователи и приверженцы свободного ПО обратили свою историческую антипатию к Microsoft в сторону Apple — то, что эта компания представляет собой блестящую бизнес-историю в новой эпохе. Поэтому я хочу примирить обе стороны и рассказать, насколько важным является свободное ПО для успеха Джобса и Apple.

ПрограммированиеСоздание и использование динамических библиотек, написанных на различных языках (C/C++, Pascal) из песочницы

Задача


Передо мной возникла задача написать загрузчик библиотек, имеющий возможность предоставить какие-то интерфейсные функции внешней динамической библиотеке. Решение должно быть максимально кроссплатформенно (как минимум, работать на Linux и Windows). Загружаться должны библиотеки, написанные на различных языках программирования, поддерживающих создание динамических библиотек. В качестве примера были выбраны языки C и Pascal.

Решение


Основной загрузчик библиотек написан на языке C. Для того, чтобы загружаемые библиотеки имели возможность использовать функции основной программы, основная программа разделена на 2 части: на основной и подгружаемый модули. Основной модуль нужен просто для запуска программы, подгружаемый модуль — это также динамическая библиотека, связываемая с основным модулем во время его запуска. В качестве компиляторов были выбраны gcc (MinGW для Windows) и fpc.
Здесь будет приведён упрощённый пример программы, позволяющий разобраться в данном вопросе и учить первокурсников писать модули к своей программе (в школе часто преподают именно Pascal).

DIY или Сделай СамУдалённая отладка железа


Отладочная демоборда, установленная в WishBoard

Помню счастливые студенческие годы, когда было море свободного времени. Золотые времена, когда на скучной паре можно было писать программу или читать полезную книгу. Или сидеть с паяльником или в глубокой отладке сутки на пролёт, без сна.
Эти прекрасные времена безумного творчества закончились тогда, когда я получил диплом и устроился на работу на полный рабочий день. Тогда закончился славный фриланс и начались суровые будни. У меня возникло стойкое ощущение, что у меня кто-то украл из жизни 11 часов ( два часа дороги, час обед и 8 часов работы). Самое печальное было в том, что на работе я выматывался на столько, что ни о каких ночных бдениях даже мыслить не приходилось: пришёл, поужинал и лёг спать, иначе завтра овощ. В конце, концов, такое положение вещей меня перестало устраивать, и я начал думать, что же делать.
В своём хобби – занятиях электроникой, я в основном делаю устройства на микроконтроллерах. Сборка отладочной схемы, как правило, идёт достаточно быстро, львиную долю времени занимает написание и отладка программы для контроллера. А на работе у меня присутствует такой ресурс как время (например обед) и быстрый Интернет. По сему родилась гениальная по своей простоте идея удалённой отладки, и не только программ, но и железа.

C++Критическая ошибка gcc

В популярном компиляторе gcc, а конкретнее — в его оптимизаторе, была обнаружена очередная ошибка, приводящая к Runtime error в процессе выполнения программы. При включённой опции компилятора O2, оптимизатор неверно обрабатывает определённый шаблон программы, что приводит к фатальным последствиям.

КомпиляторыПоприветствуем GCC 4.6

imageВозрадуйтесь братия и сестры! Очередной релиз несомненно одного из самых значимых проектов был выпущен на свободу. Итак 25 марта версия 4.6 увидела свет.

Давайте кратко посмотрим, что интересного разработчики GCC предлагают нам.