Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Состоится бесплатный мастер-класс по программированию под ZX Spectrum c использованием эмулятора

Ненормальное программированиеAssemblerДемосцена
Добро пожаловать на серию бесплатных семинаров от разработчиков, участвующих в фестивале ChaosConstructions.

7 декабря, сообщества Embedded, B4CKSP4CE и сообщество ChaosConstructions Demoparty откроют серию семинаров, посвященных демосцене, полностью некоммерческому и соревновательному спортивному виду искусства, позволяющему делать яркие и красивые спецэффекты, открывая новые возможности старой платформы ZX Spectrum.

Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Просмотры3.7K
Комментарии 13

За что я люблю ассемблер?

ПрограммированиеAssemblerСистемное программирование

Этой статье уже почти 3 года. Однако сегодня я решил подредактировать её, дополнить и выложить, наконец, на Хабр.

Читать далее...
Всего голосов 61: ↑58 и ↓3+55
Просмотры20K
Комментарии 129

Змея в загрузчике

Чулан
На днях оптимизировал Image Processing для проекта, путем использования SSE инструкций. А к вечеру, порядком соскучившись по ассемблеру и имея пару банок пива, накидал простенькую змейку, а чтобы было интересней — поместил ее в бутсектор :)

Читать дальше →
Всего голосов 39: ↑36 и ↓3+33
Просмотры817
Комментарии 26

ООП на ASM

Чулан
Как говорится, и на Марсе будут яблони цвести!

register AX extends AL implements AH {
}

register EAX extends AX {

}
Всего голосов 79: ↑54 и ↓25+29
Просмотры1.3K
Комментарии 53

Простая реализация схемы шагового двигателя на мк

Программирование микроконтроллеров
И так, данный пост нацелен на новичков в электронике а так же на новичков в программировании и освоении мк и разработке радиоэлектронных устройств.
Данная разработка представляет простейшее включение МК такого как PIC16F84A для управления шаговым двигателем.
Читать дальше →
Всего голосов 69: ↑61 и ↓8+53
Просмотры26K
Комментарии 79

Модернизация телефона старого образца(телефон рулетка).

Программирование микроконтроллеров

Суть(цель?) проекта


— На тот момент это был проект для областных соревнований по радиоэлектронике и радиоконструированию.

Далее по списку:
— Выбрать идею — модернизация телефона.
— Создать устройство на базе микроконтроллера семейства PIC16.
— Более лучшее изучение языка ASM а так же Си.
— Создать юзабельный аппарат через который можно будет звонить.
— что нибуть еще =)
Читать дальше →
Всего голосов 98: ↑93 и ↓5+88
Просмотры10K
Комментарии 52

Расширение функциональности готовых программ

AssemblerСистемное программированиеРеверс-инжиниринг
В мире ПО существует огромное количество программ, забытых своими разработчиками. Хорошо, когда уже есть хорошая альтернатива. А если ее нет? В программе может катастрофически не хватать каких-то мелочей, некоторые досадные ошибки могут годами доставлять массу неудобств пользователям, а на новых версиях ОС программа и вовсе может отказаться работать. Далеко не всегда имеются исходные коды, чтобы привести программу в порядок. Если программа простая — не составит труда за короткий срок создать альтернативу. Но если программа большая и сложная, что же делать в таком случае? Не всегда рационально тратить время и деньги на разработку полного аналога, ведь расширить в разумных рамках функциональность и исправить большинство ошибок можно уже в готовом исполняемом файле.
В этой статье будут продемонстрированы методики модификации исполняемых файлов на примере расширения функциональности легендарной игры Age of Empires II (стратегия реального времени).
Читать дальше →
Всего голосов 204: ↑203 и ↓1+202
Просмотры38K
Комментарии 120

А по другому как то можно?

Чулан
Не, развернутый пост писать мне лениво. Итак, если вдруг кто-то что то увидит в моих размышлениях — плюсуйте, или минусуйте, (слова то какие страшные:). Собсно о чем я: вопрос: зачем мы уже пару десятков лет объясняем на разных языках различным процессорам КАК мы хотим выполнить задачу? Причем делаем это миллионы раз, объясняя тупым процессорам на множестве языков программирования ЧТО мы хотим в итоге получить. Причем одни и те же задачи решались уже миллионы раз.

Различные фреймворки конечно же решают общие задачи достаточно просто, но в итоге приходится одни и те же простейшие задачи решать снова и снова. А тогда нафига нам вообще компьютеры, если мы все делаем сами?.. Может пора научить эти устройства, которые мы приручили, самостоятельно принимать простые решения, а не объяснять им снова и снова что мы от них хотим? Вообще это скорее крик души, я честно говоря уже устал писать программы на традиционных языках программирования, снова и снова объясняя моему любимому ПК банальные вещи: smart pointers, ссылки, константные ссылки, указатели, виртуальные функции, стек/динамическая память. С чего вдруг мне обо всем этом заботиться?

Возьмем простую задачу: распарсить XML файл и вывести все имена тэгов на экран. Варианты решения: бесконечно много. Можно использовать множество языков программирования, можно на каждом из них написать совершенно разный код. Скорость работы этих решений: стесняюсь оценить,
может различаться на 1-2-10 порядков. А задача то ведь сверх простая, чтобы достичь максимальной эффективности нужно всего то правильно написать несколько строк(наверное, десятков строк) ассемблерного кода.

Но ведь дело даже не в этом. Сколько, продолжая тот же пример, написано XML парсеров? А ведь логика там одна и та же. И та же «грамматика», очень много общего. А почему бы не сказать нашей любимой платформе, что такое XML по сути. Чтобы он знал, что такое XML, с чем его едят, с чем не едят и т.д. И получив его на входе сам бы преобразовывал его к нужному выходу, получив задачу ЧТО нужно сделать и самостоятельно решая задачу КАК делать.

ЗЫ. XML приведен для очень грубого и простого примера, просьба XML в каментах не трогать:)
ЗЫЫ. Первый пост, не судите строго, я исправлюсь, может быть:)
Всего голосов 27: ↑9 и ↓18-9
Просмотры214
Комментарии 12

Puls — революция в 256 byte intro

AssemblerДемосцена
Прошедший в конце августа Chaos Constructions 2009 в Питере, к сожалению, не порадовал нас революционными релизами. Однако зарубежные братья демосценеры не дремлют!

image

Буквально на прошлой неделе на Riverwash 2009 простой чешский парень Jan Kadlec (aka Řrřola) забомбил PC 256 byte intro которое установило новый мировой порядок. Имя ему — Puls.

Итак речь идет о куске машинного кода в 256 байт для Intel x86 совместимой машины. Работает он под DOS, совершенно равнодушен к 3D возможностям вашей видеокарты и объемам установленного ОЗУ, но не откажется от быстрого CPU. Код генерирует динамическую визуальную сцену используя базовые возможности Intel архитектуры и стандартного видеорежима.
Версия под DOS «с трудом» заработает под Vista, 7 и XP, выдавая низкий fps – операционная система не дает напрямую использовать аппаратные ресурсы. Поэтому есть смысл смотреть адаптированную под Windows версию (которая занимает уже несколько килобайт). Она как бы намекает нам «насколько много ресурсов поедает ОС» (сравните размеры кода под DOS и Windows).

Собственно, надеюсь, у всех есть понимание что такое 256 байт в масштабах хотя бы текста SMS сообщения, и как в таком объеме можно уместить этот движняк для многих остается непонятным. При этом рядом исходник на ассемблере который заставляет уверовать.

Обычно в этом месте обыватель задает вопрос: “Здорово! А как мы это можем использовать?”

Отвечаю примером для 9-го класса:
Читать дальше →
Всего голосов 116: ↑111 и ↓5+106
Просмотры3.6K
Комментарии 144

Сетевые извращения на ассемблере v. 1.1

Чулан
Мой первый пост в хабра-мире, прошу сильно не пинать ногами, а адекватную критику очень приветствую…

Все началось с курсового проекта по предмету ЯПНУ (Языки Программирования Низкого Уровня) по завершению которого нам в обязательном порядке следовало вложить все наши творческие и технические навыки в создание программы на великом и могучем Ассемблере. Творческая часть заключалась в выборе темы. Не долго думая я решил взять что нибудь с клиент-серверными технологиями и вот что из этого получилось
Читать дальше →
Всего голосов 34: ↑11 и ↓23-12
Просмотры658
Комментарии 7

Pyastra — транслятор кода на языке Python в ассемблер для архитектуры PIC

Чулан
Pyastra — это транслятор кода на языке Python в ассемблер. Он принимает исходный файл, написанный на Python и, если код не содержит ошибок, то генерирует ассемблерный файл, который вы можете скомпилировать в HEX-файл, используя ваш любимый PIC ассемблер (gpasm, mpasm или другие, совместимые с ними).
Читать дальше →
Всего голосов 7: ↑6 и ↓1+5
Просмотры1.3K
Комментарии 10

Коварный и ужасный sndrec32.exe

AssemblerСистемное программированиеРеверс-инжиниринг
Sound RecorderВ этом топике вы найдете немного ностальгии, каплю гнева и килограмм реверс-инжиниринга. Посвящается тем, кто знаком с программой «Звукозапись» не понаслышке :)

Когда небо было голубее, Солнце светило ярче, а Интернет был таким недоступным… Короче, в далеком детстве мне почему-то полюбилась стандартная программа «Звукозапись» из Windows 98. Не глядя на минимальную функциональность, я даже умудрялся делать в ней простейшие «ремиксы» ей же записанных мелодий из игр.

Шли годы. Железо становилось мощнее, а ОС функциональнее. Но «Звукозапись» не менялась. Даже в Windows XP она оставалась такой же, как и тогда. Пришло время обновить железо. 3 гигабайта оперативной памяти — раньше и мечтать о таком не приходилось. Этого уж точно должно хватить всем! Так и было, пока дело не дошло до той самой «Звукозаписи». После попытки записать небольшой звук программа невозмутимо возразила, что ей недостаточно оперативной памяти.
Читать дальше →
Всего голосов 183: ↑177 и ↓6+171
Просмотры20K
Комментарии 98

Java-ассемблер, мета-программирование и JPA

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

Краткая постановка задачи:
  • Есть набор виртуальных «классов» в понятии бизнес-пользователя. Например, «сайт», «папка», «новость», и т.д. Каждый из таких классов имеет набор полей (аттрибутов).
  • Пока что у нас нет наследования классов, а поля ограничены примитивными String/Integer/Long/Enum/Boolean, даже без multiple, но с возможными заданными значениями по умолчанию
  • Каждый класс записывается в отдельную таблицу, например, objects_sites, objects_news, objects_folder, etc. Таблица всегда содержит ID объекта, а также колонки для полей.
  • Нужно сделать так, чтобы загрузка этих объектов работала через JPA (Hibernate), с использованием необходимого кэширования/транзакций/Lazy-loading'а и других вкусностей, которые нам даёт JPA.

Для выполнения данной задачи использовалось:
  • В качестве баз данных — MySQL 5.0, InnoDB, три схемы базы данных (разные типы могут лежать в разных схемах, чтобы отделить системные типы от пользовательских)
  • Sun JDK 6.0
  • Tomcat 6 + JOTM 2.1.9 + Hibernate 3.5.0-Final (patched)
  • Для создания классов использовалась связка CGLib 2.2 (входящая в Hibernate) и ASM 3.2 (в Hibernate входит 3.1)

Читать дальше →
Всего голосов 42: ↑33 и ↓9+24
Просмотры8.8K
Комментарии 24

GMABooster? Разгоняем?

Компьютерное железо


Решился опубликовать результаты моего исследования программы GMABooster, которая была представлена хабражителям буквально вчера. Сразу скажу, анализ не был бы проведен столь быстро, если бы не совершенно незнакомый хабраюзер Werat, который удаленно тестировал из под админа мой код на своем Acer Aspire One a150 (отважился же человек).

Своим топиком мне хотелось бы подчеркнуть важность открытых продуктов, свободы обмена информации между людьми [а еще напомнить всем жалующимся и плачущим, что Хабр — торт!].

Disclaimer: Анализ приведен исключительно в обучающих и мирных целях, меньше всего мне хотелось бы снизить размер пожертвований в сторону автора программы. В любом случае им проведена работа, которая заслуживает уважения. Также, я вынужден рассмотреть «альтернативное» решение для некоторых платформ, в силу того, что GMABooster не удобен по ряду критериев, особенно для пользователей Linux и Mac.

Расследование внутри
Всего голосов 112: ↑110 и ↓2+108
Просмотры14K
Комментарии 24

Иследование несложных crackme's (часть 3)

Assembler
Здравствуйте, Хабралюди.
Представляю вам третью часть из моего цикла статей о исследовании крякмисов. В этом топике мы поговорим с вами о ручной распаковке некоторых пакеров и о преодолении не сложных антиотладочных методов.
Читать дальше →
Всего голосов 45: ↑36 и ↓9+27
Просмотры10K
Комментарии 49

Уязвимость эмулятора в антивирусе Касперского

Информационная безопасность
Из песочницы
На данный момент в мире создаётся всё большее количество вирусов, за количеством которых невозможно успеть. Поэтому современные технологии «облачных сетей» и эвристических анализаторов кода призваны обеспечить защиту от совершенно новых угроз до того, как аналитики добавят образцы в антивирусные базы.

Не для кого не секрет, что в каждой системе всегда найдется пара дырок, которые рано или поздно выплывут наружу. Иногда это связано с ошибками программистов, иногда — из-за развития технологий вирмейкерства. В данной статье я покажу Вам один из способов обхода эмулятора в последних версиях антивируса Касперского.
Читать дальше →
Всего голосов 45: ↑44 и ↓1+43
Просмотры4K
Комментарии 27

Чуть больше о загрузке самодельных ОС — пишем bootloader

Системное программирование
Не так давно решил чуть получше изучить архитектуру IA-32. А что лучше всего для запоминания? Конечно же практика. Но программируя в ОС мы врядли получим самый низкий уровень доступ к железу без помех. Поэтому для этих целей будем писать собственное подобие операционной системы. То есть проще говоря будем выполнять свой код, сразу после загрузки BIOS'а.
Первой проблемой с которой столкнется желающий программировать на низком уровне — как же загрузить свой код?
Читать дальше →
Всего голосов 129: ↑119 и ↓10+109
Просмотры13K
Комментарии 49

Обратная польская запись на языке ассемблера с синтаксисом AT&T

Ненормальное программирование
Из песочницы
Данная программа изначально была написана как небольшая лабораторная работа по курсу машинно-ориентированного программирования программирования, но в последствии появилась мысль представить её сообществу. Именно потому что алгоритм реализован не на языке ассемблера с синтаксисом Intel, а на языке ассемблера с синтаксисом AT&T.
Читать дальше →
Всего голосов 12: ↑7 и ↓5+2
Просмотры5.1K
Комментарии 5

Ассемблер для Windows используя Visual Studio

Разработка веб-сайтов
Из песочницы
Многие из нас изучали ассемблер в университете, но почти всегда это ограничивалось простыми алгоритмами под DOS. При разработке программ для Windows может возникнуть необходимость написать часть кода на ассемблер, в этой статье я хочу рассказать вам, как использовать ассемблер в ваших программах под Visual Studio 2005.

image

Создание проекта


В статье мы рассмотрим как вызывать ассемблер из С++ кода и обратно, передавать данные, а также использовать отладчик встроенный в Visual Studio 2005 для отладки кода на ассемблер.
Читать дальше →
Всего голосов 80: ↑63 и ↓17+46
Просмотры121K
Комментарии 31