Комментарии 46
Если копаться в интеловских инструкциях, то полезно www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
Ну и если изучать программы под win, то msdn.
И ещё общий случай источника знаний — гугл.
Ну и если изучать программы под win, то msdn.
И ещё общий случай источника знаний — гугл.
Зачем копаться в интеловских инструкциях когда это (и гораздо больше) уже сделал Агнер Фог
Удивительно что среди стольких ссылок нет одной действительно полезной:
www.agner.org/optimize/
Удивительно что среди стольких ссылок нет одной действительно полезной:
www.agner.org/optimize/
аналогичные доки от AMD developer.amd.com/documentation/guides/Pages/default.aspx#manuals
P.S. если не ошибаюсь, мануалы от Intel можно заказать себе домой и при том совершенно бесплатно, я в свое время получил здоровенные 6 книг
P.S. если не ошибаюсь, мануалы от Intel можно заказать себе домой и при том совершенно бесплатно, я в свое время получил здоровенные 6 книг
А по SSE можете что-нибудь посоветовать?
Интересно, а какое количество таких вот неофитов, вдохновленных историей одного байта в конечном итоге хоть как-то связывают свою жизнь с низкоуровневым програмированием?
По теме:
1) А где же Абель, классика как-никак? Абель — Ассемблер. Язык и программирование для IBM PC.
2) Так же в комплекте с masm32 идет просто отличная подборка хелпов, туторов и примеров — \masm32\{help,tutorial,examples}.
3) Уроки Iczelion'а
4) Введение в крэкинг с нуля, используя OllyDbg (by Рикардо Нарваха)
5) gdb manual / gdb HOW-TO
6) На сайте securitytube.net есть 2 неплохих видеокурса:
securitytube — Windows Assembly Language Megaprimer
securitytube — Assembly Language Megaprimer for Linux
По теме:
1) А где же Абель, классика как-никак? Абель — Ассемблер. Язык и программирование для IBM PC.
2) Так же в комплекте с masm32 идет просто отличная подборка хелпов, туторов и примеров — \masm32\{help,tutorial,examples}.
3) Уроки Iczelion'а
4) Введение в крэкинг с нуля, используя OllyDbg (by Рикардо Нарваха)
5) gdb manual / gdb HOW-TO
6) На сайте securitytube.net есть 2 неплохих видеокурса:
securitytube — Windows Assembly Language Megaprimer
securitytube — Assembly Language Megaprimer for Linux
Примерно половина из указанных пунктов содержится в подразделах указанных ранее сайтов, но добавил отдельными ссылками. Большое спасибо за дополнение!
К теме первого вопроса: не думаю что много. Изучить ассемблер обычно хочется именно для самообразования (как Lisp, хотя некоторые, например я, умудряются писать на лиспе на работе), а не для связывания с ним жизни. Но и пригодиться может — например для вставок в С/С++ код, или для программинга микроконтроллеров в качестве хобби.
К теме первого вопроса: не думаю что много. Изучить ассемблер обычно хочется именно для самообразования (как Lisp, хотя некоторые, например я, умудряются писать на лиспе на работе), а не для связывания с ним жизни. Но и пригодиться может — например для вставок в С/С++ код, или для программинга микроконтроллеров в качестве хобби.
Приветствую, брат по Lisp. Согласен по всем пунктам. Имею дополнение: знание языков ассемблера для архитектур, для которых пишешь код, бывает незаменимо для детального анализа кода и когда сталкиваешься с багами компилятора. Последнее у меня как-то случилось на работе: мы с напарником писали игру и там был цикл отрисовки объектов на экране, что-то типа этого:
Такие вот дела. Вся эта муть была в VisualStudio 2008, а в VS2010 баг не проявлялся. Без знания ассемблера мы могли искать это не час-полтора, а целый день или дольше.
for (size_t i = 0; i < OBJECTS_COUNT && objects[i] != NULL; ++i)
objects[i]->Draw();
objects — это отсортированный массив указателей на рисуемые объекты, если что. И вот, как-то этот код начал глючить — не отрисовывались объекты. Отладили всё это дело вдоль и поперёк, а ошибку не нашли. Вставили отладочный вывод в логи — объекты рисуются, убрали — не рисуются. Более того, прекрасно работал идентичный изначальному код:for (size_t i = 0; i < OBJECTS_COUNT && objects[i] != NULL; ++i)
{
GameObject *obj = objects[i];
obj->Draw();
}
Заглянули в дизассемблированный код изначального варианта — оказалось, компилятор тело цикла вообще выкинул из кода. Даже если перед отрисовкой поставить бессмысленноеint a = 0;
то код будет работать.Такие вот дела. Вся эта муть была в VisualStudio 2008, а в VS2010 баг не проявлялся. Без знания ассемблера мы могли искать это не час-полтора, а целый день или дольше.
про книжку В.Н. Пильщикова «ASSEMBLER Программирование на языке ассемблера IBM PC» забыли, добавьте и ее
И еще, по-моему, перед тем как браться за непосредственно кодинг стоит проштудировать труды Таненбаума, ну как минимум его «Архитектура компьютера».
Кому в тягость академический стиль изложения Таненбаума рекоммендую просто отличну книгу Чарльза Петцольда — «Код».
Вот тогда можно будет с уверенностью самому себе сказать, что уж если не в деталях, то как минимум в общих чертах, имеешь представление о том, как работает машина.
Кому в тягость академический стиль изложения Таненбаума рекоммендую просто отличну книгу Чарльза Петцольда — «Код».
Вот тогда можно будет с уверенностью самому себе сказать, что уж если не в деталях, то как минимум в общих чертах, имеешь представление о том, как работает машина.
>> Интересно, а какое количество таких вот неофитов, вдохновленных историей одного байта в конечном итоге хоть как-то связывают свою жизнь с низкоуровневым програмированием?
Не знающий ассемблера программист на С подобен переводчику не знающего языка с/на который он переводит. Компилятору стоит доверять ещё меньше чем google translate.
Не знающий ассемблера программист на С подобен переводчику не знающего языка с/на который он переводит. Компилятору стоит доверять ещё меньше чем google translate.
Хабр — это не закладки твоего браузера.
Действительно не закладки, ведь закладки моего браузера не могут прочитать те, кто ищет материал по ассемблеру, и не могут добавить в избранное те, кто возможно будет делать это в будущем.
То, что ты не знаешь как выставить закладки твоего браузера на обозрение, не значит что таких сервисов не существует в интернете. Пользуйся ими, а не хабром, это прямо записано в правилах, которые ты читаешь перед началом создания сообщения.
Или ты думаешь что пользователи Хабра настолько тупые что не в состоянии воспользоваться Гуглом?!
Или ты думаешь что пользователи Хабра настолько тупые что не в состоянии воспользоваться Гуглом?!
про микроконтроллеры надо обязательно добавить.
это реальная область, где ассемблер реален во всей красе и вариациях.
да и то, там уже на высших уровнях, все более менее подогнано под компиляторы языка С.
это реальная область, где ассемблер реален во всей красе и вариациях.
да и то, там уже на высших уровнях, все более менее подогнано под компиляторы языка С.
Извиняюсь что влезаю. Нужно изучить паскаль. Не подскажите какие нибудь хорошие книги, либо ресурсы?
В программировании вообще не разбираюсь, изучить нужно только основы.
В программировании вообще не разбираюсь, изучить нужно только основы.
НЛО прилетело и опубликовало эту надпись здесь
win32assembly.online.fr/ же
я на уроках исцелиона учился, самые класные мануалы для школоты
я на уроках исцелиона учился, самые класные мануалы для школоты
Мне в свое время с лихвой хватило ассемблера Z80 :)
Спасибо Speccy за наше счастливое программерское детство :)
Спасибо Speccy за наше счастливое программерское детство :)
Внесу и свою небольшую лепту. Не так давно интересовал вопрос «а как же это делают яблоки?», вот тут нашел небольшое введение: http://orangejuiceliberationfront.com/intel-assembler-on-mac-os-x/
Я бы добавил еще книгу Юрия Ревича «Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера», сейчас как раз ее читаю :)
alexfru.narod.ru/emiscdocs.html Подборка доков из теплых ламповых времен.
А как же FASM?
Еще книжка есть:
Название: Язык ассемблера для IBM PC
Автор: Нортон П., Соухе Д.
Год: 1993
Страниц: 352
Язык: русский
Издательство: Компьютер
ISBN: 5-88201-008-Х
Название: Язык ассемблера для IBM PC
Автор: Нортон П., Соухе Д.
Год: 1993
Страниц: 352
Язык: русский
Издательство: Компьютер
ISBN: 5-88201-008-Х
Название: Микропроцессор i486. Архитектура и программирование.
Автор: Григорьев В. Л.
Издательство: ТОО «ГРАНАЛ»
Год: 1993
ISBN: 5-900676-02-1 (Книга 2,3,4 первую найдете)
4 книги в двух томах. По сути хороший и наверное единственный перевод «Intel Architectures Software Developer Manuals» хоть и в версии на начало 90х, но все что надо там уже есть.
Нортон П., Уилтон Р. IBM PC и PS/2.руководство по программированию: Пер с англ. -М.: Радио и связь, 1994, -336с.
Тут все прерывания описаны, и работа с простыми железками.
Автор: Григорьев В. Л.
Издательство: ТОО «ГРАНАЛ»
Год: 1993
ISBN: 5-900676-02-1 (Книга 2,3,4 первую найдете)
4 книги в двух томах. По сути хороший и наверное единственный перевод «Intel Architectures Software Developer Manuals» хоть и в версии на начало 90х, но все что надо там уже есть.
Нортон П., Уилтон Р. IBM PC и PS/2.руководство по программированию: Пер с англ. -М.: Радио и связь, 1994, -336с.
Тут все прерывания описаны, и работа с простыми железками.
вспоминаются еще TechHelp и Interrupt List
+ x86asm.net
Забыли ещё один ресурс. Сам на третьем курсе делал. Для чайников: www.osinavi.ru/asm
Могу посоветовать еще книги Столярова, хотя это скорее методички, можно скачать на www.stolyarov.info/books/asm_unix. Они по небольшие, но инфа в них есть очень ценная, мне очень помогло. Еще отличная книга Барри Брэя — «Микропроцессоры Intel: 8086/8088, 80186/80188, 80286, 80386, 80486, Pentium, Pentium Pro Processor, Pentium II, Pentium III, Pentium 4. Архитектура, программирование и интерфейсы» — больше 1300 страниц, рассматривается все досконально.
Я прошу и требую))) хотел просить и требовать добавить бавить SoftIce в список инструментов, но с ужасом увидел, что он не поддерживается начиная с XP SP3. Куда мир катится?
Годный учебник для ARM thinkingeek.com/2013/01/09/arm-assembler-raspberry-pi-chapter-1/
Intel® 64 and IA-32 Architectures Software Developer Manuals — первоисточник Intel. Название довольно туманное, но при ближайшем рассмотрении это именно то, что надо.
Как ни странно, но в статье на Луркоморье есть отличные ссылки — добавьте пжлста в общий список «Для начала»
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Список ресурсов для изучения Ассемблера