я начинал ассемблер с книжки "Вирус своими руками" или что-то в этом роде, там описывались технологии создания вирусов и был простенький пример вируса на асме, который умел находить и заражать комовские файлы :)
Это получается, что жизнь слишком коротка, чтобы делать то, что тебе интересно?
Так же можно сказать, что жизнь слишком коротка, чтобы писать картины, ведь в этом надо так долго разбираться.
Что такое ассемблер сейчас и почему он стал именно таким - историческая справка
Для чего он использовался раньше
Главные направления использования ассемблера в наши дни
Ну а дальше можно раскрывать темы использования ассемблера сейчас ;)
Удачи вам!
Наверно такой апетит тяжело уталить. Ну допустим я на МК (AVR) программил. И скажу, что это две разные вещи. RISС архитектуура отличается (да и проще) от X86. Короче принцып немного разный. А автор как раз и предлагает для X86. Кстати автору, слабо под х64 (без сарказма). Что там и как? Ну кроме увелечения extended (вроде). Или я не прав?
Тогда еще интереснее создать блог типа "Создание чудо устройства имярек"
и подробненько с фотками и пошаговым описанием рассказывать как это чудо делается.
Программирования будет достаточно, а вот поять по сути мало, смотря канешн, что за девайс. Имхо будет интересно.
Было бы очень интересно почитать такие статьи, конечно в интернете много такого можно найти, но на хабре было бы удобно.Если есть кто готов писать такие статьи, знайте у вас будет хотя бы 1 постоянный читатель).
Мне лично хотелось бы видеть примеры сравнений некоторых функций на разных архитектурах
Например - x86 и arm
Еще было бы интересно по разным там микроконтроллерам aka однокристалки
Да у меня уже готова одна статья, которая является примером реализации микроядра на ассемблере x86 без переключений в режимы защиты, которая соответствует парадигме ООП
Жду кармы для отправки.
Блог будет супер, т.к. я давно хотел найти что-то подобное.
Я думаю надо бы побольше на тему "Асм сегодня", т.к. сам когда начинал, то были сомнения - а стоит ли это того.
Не пинайте меня сразу, просто я тогда не вкуривал, что асм везде нужен...
Новичкам, вроде меня, думаю полезно было бы узнать не столько про основы самого асемблера (при желании эту информацию можно найти где-то ещё), сколько про подготовительный момент: каким образом пишутся программы, что необходимо подготовить, чтобы написать своё первое "Hello, World", всё в таком духе.
Давно пробовал начать изучать асемблер, но застопорился именно на этапе подготовки (Пример из книжки так и не удалось скомпилировать... :о( )
Ты про блокнот чтоль? В асме нет ide, пародоксально но под асм я ничего похожего на ide (по крайней мере нормально сделанного) не встрчал. Только консольные утилиты. Разумеется речь идет о х86 т.к. на контроллерах (мое основное направление) асм живет и здравствует и сдаст свои позиции еще ой как нескоро.
Тем можно придумать ой ей ей сколько т.к. на хабре до сего момента про него ваще мало где упоминали (разве что тот блогер который расписывал работу трояна с точки зрения вирусного аналитика).
А вот в каком виде размещать материал. Самое наглядное\информативное это было бы видеокаст: пишеш код, фрапсом(или чем то другим)сливаеш всё в авишку и параллельно наговариваеш в микрофон собственно сам каст.
Интересует низкий уровень под x86, а именно:
1) Работа с железом (Доступ к шине PCI, USB)
2) Практические приемы и особенности работы в защищенном режиме, нереальный режим
3) Написание загрузчиков
А можно предложить то, чего НЕ хотелось бы видеть?
1. Любую информацию которой полно в интернете: описания команд, директив, отличия компиляторов и линкеров, описания команд дебагеров.
2. Превращения блога в курс для начинающих. Таких курсов полно и без хабра. И любой такой курс затянется на десятки или сотни бесполезных постов с информацией, которая и так доступна каждому, кому не лень учится.
В общем, нет попсе, даешь описания необычных моментов, особых тем, актуальных постов.
В таком случае предлагаю "начинающим" рассказать о работе процессора (регистры, прерывания и т.п.) и, всё же, небольшой словарь прерываний и комманд, причём которые будут использоваться именно в этом тексте, не надо много - только "по делу".
Интересно было бы почитать про создание какого-нть простого робота на базе какого-нть AVR или прочего. т.е. ращработка команд, создание самого робота, его прошивка. Рабочий результат в виде фоток и видео =)
Про то, чтоб писать видеокастом (слайдкастом?) это правильно я думаю, но не всё подряд.
А так с асмом у многих проблемы с организацией и инструментарием, чем с самим кодом (имхо)
Что нибудь совсем низкоуровневое (то, что запустится без ОС) для начинающих (уровень ассемблера = 0, можно в аналогии с другими языками, тем же C). Инструменты, справочники, сниппеты. ИМХО, лучше статьи.
Тут можно нарваться на множество граблей супер-пупер-оптимизированный на вид код может проигрывать в производительности прямолинейно-кондовому, просто потому, что оптимизатор заточен на нормальных простых людей...
Если кому нужно, могу сообразить статью по написанию драйверов для Mac OS X. Могу о PCI шине, о USB шине, о DMA, еще может быть какие сведения кому интересны по программированию устройств :)
Давным-давно, целых 4 года назад) я как то скачал один архив, где было 30 программ на Си, в самой простой был просто ввод вывод, а потом шли программы в которых была работа с файлами итп.
Было бы неплохо увидеть здесь публикации такого формата. Часть для начинающих можно ужать в пару постов, где будет рассматриваться пара самых частых конструкций, остальное люди найдут в справочниках. А потом можно программы на самые разные темы, например простые резидентные, загрузчики, элементарные драйвера. Ведь все технологии лучше усваивать на примерах использования.
довольно часто приходилось изучать чтото по чужому коду. было проще и легче, чем вычитывать учебники.
может быть есть смысл поставить какую-нибудь цель, например: написать игру типа "змейка"? (пример конечно тривиальный, но это первое что пришло в голову). И по-этапно, с помощью статей, подкастов или ещё как то, шаг за шагом реализовывать её, с пояснениями и комментариями.
А в коментах к записям уже народ будет и сам пыаться оптимизировать... предлогать варианты и саморегулироваться :)
Имхо так даж интереснее будет :)
когда в университете проходили асм, то пользовались турбо ассемблером и турбо дебаггером. Хотелось бы узнать есть ли под линуксь/макось аналоги турбо дебаггера(в смысле чтобы трассировкой проходить по коду и следить за содержанием переменных/регистров/стека).
Хабру вполне хватает тематики веба. Зачем превращать его в сборную солянку?!
Нужно делать мега-охуенно, то есть либо полно, либо уникально. Здесь этого не выйдет.
Кому нужен ассемблер могу пойти на: http://wasm.ru/, http://mega-tokyo.com/, http://osdev.org/
или же почитать Юрова, Зубкова, погуглить и пояндексить.
Я думаю, большинство вообще не понимает, что им интересно. Многие просили азов, если до сих пор они не смогли купить Зубкова или сходить на wasm им уже не поможешь. Им просто хочется считать себя людьми программирующими на ассемблере. Просто понты.
Было бы любопытно попрограммировать x86 процессор с нуля что-то вроде HelloWorld операционной системы (от простого вывода HelloWorld до защищенного режима и нескольких процессов).
Да, и хорошо бы, чтобы руководство было ориентировано на какую-то виртуальную машину (GNU Bochs, VMWare), чтобы снизить "порог вхождения" для тех, кто не хочет мучать настоящее железо с риском потерять рабочее окружение.
Спасибо вам за ваши комментарии,все пожелания постараемся учесть.
С планами на ближайшее будующее определились.Будет одна(первая) статья с ссылками на различные статьи на васме и прочем для новичков,это будет что-то вроде отправной точки.Далее будут статьи,с ними ясности меньше,но могу сказать точно: копипаста не будет.
PS люди у которых есть интересные идеи/статьи(как и свои так и ссылки на чужие)/что-либо ещё пишите в лс.
Когда-то, в старших классах, помнил почти все команды ассемблера для процессора Z80 в шестнадцатиричных кодах на память... С x86 дальше модификации пары-тройки программ с помощью SoftIce не пошло. Кстати, низкоуровневые отладчики сейчас в почете? Можно и о них написать.
Имхается мне, что должен быть пост для начинающих - введение в предмет, обзор инструментов, ссылки на статьи. По этому поводу, кстати, хочу сказать пару слов про SoftIce: новичку он не нужен. Ему нужен OllyDbg, с которым на порядок (если не на два) меньше проблемм. Врядли новичок будет ядра и драйвера отлаживать.
Из интересных мне тем - антиотладочные приемы, всякие хитрые и неочевидные приемы. Написание драйверов (особенно - реверсинг). Работа с аппаратурой - тоже интересно. Ассемблер под NIX...
Сам мог бы помочь с написанием статей про OllyDbg, Ida (Ida script для начинающих и создание собственных сигнатур), Hiew. Но тут нужны конкретные примеры, на пустом месте писать сложно. И конечно же про реверсинг :)
Зачем писать статьи про иду и хвью, если уже есть книги Криса Касперски на русском языке, с которых вполне можно начать учить и ассемблер и реверс инжинеринг и все остальное? Не лучше ли дать ссылки на магазины где такие книги продаются?
А мне вот интересен не сам ассемблер, а скорее системное программирование в общем. Так что было бы неплохо организовать коллективный блог по теме OSEV и системного программирования. С OSDEV меня давняя любовь связывает, может даже чего и напишу интересного по этому поводу. Здесь также присутствует еще несколько человек из постоянной тусовки, надеюсь, что они меня поддержут и отпишутся. Фриман, легос, грин? Вы тут?)))
А ассемблер да, всегда интересная тема. Просто читать учебники по ассемблеру не интересно. Я учился на создании простых загрузчиков, перепечатывая их текст из рассылок, разбираясь в незнакомом языке, а потом как-то само пошло. asm наиболее простое явление в программировании в том смысле, что мы получаем то, что хотим, а не то что сделает за нас транслятор языка (в смысле высокоуровневых, конечно). Я бы тоже не отказался парочку статей навалять, хотя и не считаю себя специалистом так просто, маленькое увлечение.
Подкаст по OSDEV надеюсь будет, давно хотел записать что-то такое.
Автору респект, двигай системщину, больше. сильнее и выше. Всех благ и творческих успехов.
под словом "ассемблер" обычно почему-то понимают x86. Несмотря на то, что архитектур заметно больше, чем одна :)
В общем, я боюсь, что этот блог выродится в "как написать win32 программу без VC++". Долго и никому, по большому счёту, не нужно.
Хорошо, если я ошибаюсь :)
Ну x86 избыточен по количеству поддерживаемых инструкций, да и писать под него несложно, потому люди и начинают с него: сначала RM, потом PM, лонгмод, нереальный режим...
Это конечно тру начинать свое знакомство с ассемблером с Z80, писать операции деления и умножения (каковых там нет), оптимизировать код по максимуму... Но врядли кому-то это нужно кроме профи дела и любителей-гиков, зацикленных на системном кодинге.
Если люди поймут суть подхода, то вполне смогут потом освоить и современные контроллеры, и RISC... Важно лишь, чтобы люди интересовались и шевелились в нужном направлении.
Тут уже многое предложили (по уменьшению в порядке значимости, для меня):
- Другие архитектуры + асм;
- "Бытовая" оптимизация в C/C++;
- Другие ОС + асм;
- Извращения )
Лично я бы с удовольствием почитал статьи, которые нацелены не на то, чтобы научить программировать на ассемблере (этим я вряд ли буду заниматься), а на то, чтобы лучше понять, как работает машина, как стоит программировать, например, на C, чтобы код был эффективным и т. п.
Список в порядке уменьшения интересности, для меня:
- Написания загрузчиков и прошивок для различных архитектур (КПК, ARM);
- Оптимизация в C/C++ и замена стандартных функции для их ускорения;
- Разбор уже существующих прошивок от мобильников и т.п.
- Творчество (256 Byte, 512 byte, 4096 byte)
P.S. Неплохо бы архитектуру системы обсуждать, то есть что откуда вызвалось
и кута потом загрузилось. Потому как иногда полезно понимать почему это не
заработало. Или откуда оно выпало с ошибкой.
Начнём…