LINUX.ORG.RU

Посоветуйте книгу по ассемблеру для следующих целей:

 ,


2

2

Друг решил стать программистом. Я ему прописал изучить азы ассемблера для того что бы понять суть сразу и потом при изучении Си и т.п. не терять время на долгое осознание всяких там стэков, регистров и прочих выравниваний памяти.

Посоветуйте пожалуйста хорошую книгу, которую можно полностью не читать, которая в своём начале позволит понять азы программирования на ассемблере для 86й архитектуры (32/64), принцип работы микропроцессора (архитектуру), тонкости работы с памятью и прочие премудрости низкоуровневого программирования.

П.С. На русском.

Лучше дай ему книгу по алгоритмам и учебник по питону/паскалю/окамлу или чему-нибудь такому. А такие низкоуровневые вещи надо потом изучать.

Но вообще по ассемблеру мне больше всего понравился Калашников «Ассемблер - это просто»

alexanius ★★ ()

П.С. На русском.

Книги С. В. Зубкова по Ассемблеру.

Я ему прописал изучить азы ассемблера для того что бы понять суть сразу и потом при изучении Си и т.п. не терять время на долгое осознание всяких там стэков, регистров и прочих выравниваний памяти.

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

Если твой друг захотел не только стать программистом, но и устроиться на работу программистом — отправь его на какой-нибудь HeadHunter и пусть смотрит вакансии, вилки з/п, а потом изучает наиболее понравившийся стэк технологий.

Вакансии, подразумевающие знание Assembler и C, редки и на них в 99% случаев не берут людей без какого-либо опыта программирования.

Так что пусть твой друг хорошенько подумает, каким именно программистом он хочет быть, прежде чем браться за Ассемблер.

EXL ★★★★★ ()

Для того, чтобы понять суть, лучше всего читать даташиты к микроконтроллерам.

quantum_cat ★☆ ()

«Assembly Language Step-by-Step: Programming with Linux 3rd Edition». Да, не на русском (возможно есть перевод), но написана простым и понятным языком. Нужно иметь пол мозга, чтобы разобраться.

zl0y ()

Был неплохой сайтец wasm.ru. Там правда всё с уклоном в прикладное использование на офтопике. Но, всё же вот архив статей.

Лично я начал понимать как и зачем работают высокоуровневые языки, только после изучения материалов этого сайта. Хотя в те времена с литературой было туговато.

Ещё есть курсы аля «введение в архитектуру эвм» на том же степике, которые крайне не плохо раскрывают тему.

Имхо, книгу, а тем более справочник начинающему давать довольно безсмысленно. Если только это не учебник с программой и практическими задачами.

pon4ik ★★★★★ ()
Последнее исправление: pon4ik (всего исправлений: 1)

Посоветуйте пожалуйста хорошую книгу

Я бы посоветовал профильное образование. Даже не знаю, возможно самообразование на этом пути или нет.

vvn_black ★★★★★ ()

Я ему прописал изучить азы ассемблера для того что бы понять суть сразу и потом при изучении Си и т.п. не терять время на долгое осознание всяких там стэков, регистров и прочих выравниваний памяти.

Мне кажется, что это вредный совет. Он с самого начала много времени потеряет на то что на практике нужно уже малой доле людей.

Zubok ★★★★★ ()
Ответ на: комментарий от pon4ik

Там правда всё с уклоном в прикладное использование на офтопике

Будто на никсах ассемблер вообще взлетел. Так, вставочки в ядре мелкие.

bodqhrohro_promo ()
Ответ на: комментарий от bodqhrohro_promo

Ну на пинде он тоже особым спросом не пользуется, однако, материалов субьективно больше, т.к. как минимум всякие шеллкоды делать более окупабельно было, особенно в нулевые вплоть до xp sp3.

pon4ik ★★★★★ ()
Ответ на: комментарий от anonymous

Шевкопляс Б.В. Микропроцессорные структуры. Инженерные решения (1990)

Программисту? Это же по железу книга.

ip ★★★★ ()
Ответ на: комментарий от ip

осознание всяких там стэков, регистров и прочих выравниваний памяти

принцип работы микропроцессора (архитектуру)

anonymous ()

Друг решил стать программистом. Я ему прописал изучить азы ассемблера для того что бы понять суть сразу

В слюни. выдай для начала http://www.stolyarov.info/books/programming_intro/vol1 автор конечно тот ещё фрукт, но кмк написано достаточно неплохо.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от vvn_black

Я бы посоветовал профильное образование. Даже не знаю, возможно самообразование на этом пути или нет.

всегда и было самообразование, разве что то поменялось ?

x905 ★★★★★ ()
Ответ на: комментарий от x905

В моей реальности я не встречал хороших программистов без базы в виде высшего образования. Правда, плохих и с вышкой большинство, но хорошие попадаются.

vvn_black ★★★★★ ()

Не стоит стесняться, если хочешь изучить ассемблер. Я в асме не новичок, но наступила потребность в освежении знаний/навыков в сабже. Поэтому я заказал себе книжку Пирогова. Ибо все книжки, которые у меня имеются, устарели.

Deleted ()
Ответ на: комментарий от vvn_black

без высшего образования именно по бд ?

x905 ★★★★★ ()

Могу посоветовать книгу Питера Абеля «Язык ассемблера для IBM PC и программирования» (1992, ISBN 5-06-001518-1, перевод Ю.В.Сальникова). Оригинальное название: Peter Abel «IBM PC Assembler Language and Programming» (1987)

Я давным-давно начал изучение ассемблера именно с нее и не смогу посоветовать ничего более локаничного и чрезвычайно полезного. Если план состоит в том, чтобы начать изучать ассемблер серъезно, то это книга клад.

dsl ()

Я ему прописал изучить азы ассемблера

Вредитель.

ox55ff ★★★★★ ()

Плюсую Зубкова(и затем доки от производителя, тот же Intel Programmers Manual). Насчёт того, что не особо практично нынче начинать с ассемблера, уже сказали

Deleted ()

«Introduction to 64 Bit Intel Assembly Language Programming for Linux», Ray Seyfarth, 2011 — более-менее современная, но совсем для новичков в программировании, наверное, не подойдёт, хоть и написана довольно просто

anonymous ()
Ответ на: комментарий от dsl

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

Iron_Bug ★★★★★ ()
Ответ на: комментарий от EXL

Если твой друг захотел не только стать программистом, но и устроиться на работу программистом — отправь его на какой-нибудь HeadHunter и пусть смотрит вакансии, вилки з/п, а потом изучает наиболее понравившийся стэк технологий.

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

Iron_Bug ★★★★★ ()
Ответ на: комментарий от Iron_Bug

Попробую отстоять свое мнение.

Если вести речь об обучении, то Абель хорош именно тем, что он ясно (личное мнение) описывает назначение самих команд, регистры процессора и прочее, т.е. базовые вещи которые можно встретить везде начиная от Atmel ATtiny и заканчивая самыми последними процессорами от Intel или AMD.

Я сам шел этим путем и мне показалось, что сделать обобщение от простого к сложному это хорошая идея.

dsl ()

Чтото лор Кнута забыл. Исправляю. Там и асм(правда для неактуальной ныне машины) и структуры данных с алгоритмами. А асм наверное лучше с простого учить - i8080. Микроконтроллеры тоже хорошо, но там специфика SoC и гарвардской архитектуры может запутать поначалу. Потом апгрейд до i486(защита памяти, многозадачность). На этом месте забить на асм и выучть C. Потом почитать архитектуру P2(кэши,mmx,конвейер,спекуляции). Все перечисленное довольно объемный материал и при этом не даст понимания как сделать сайт визитку или todo-менеджер для iPhone.

anonymous ()

На русском.

Без знания английского пусть пхп учит и на большее не расчитывает

redixin ★★★★ ()

когда он тебе скажет, что ему больше не хочется становиться программистом, дай ему любой сервис по изучению питона/любого другого скриптового языка на примерах/играх и тп.

LiBer ★★★ ()

В любом отладчике можно посмотреть

всяких там стэков, регистров и прочих выравниваний памяти

Пусть лучше пишет на C и смотрит какой код генерит момпилятор (gcc -S). Соответственно нужен простенький справочник по ассемблеру.

anonymous ()
Ответ на: комментарий от dsl

я просто думаю, что сейчас уже не найти тех машин, для которых этот ассемблер был актуален. всё изменилось. азы азами, но когда у новичка не работает программа - он не поймёт, что надо поменять все регистры на 64 бита, изменить параметры вызовов и прочее, и прочее. а тут ещё вмешивается ось. во времена Абеля мы счастливо сидели под DOS и могли садиться на любое прерывание и писать прямо в видеобуфер или в порты любого девайса. сейчас же фига с два ось даст такую свободу действий. поэтому проблематично будет юзать примеры, рассчитанные на простую ось без ограничений.

Iron_Bug ★★★★★ ()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от alexanius

Лучше дай ему книгу по алгоритмам и учебник по питону/паскалю/окамлу или чему-нибудь такому.

И он будет потерян. Ни один способный человек никогда не примет эти поделки. Он либо выпилит их, либо выпилится из темы сам.

А такие низкоуровневые вещи надо потом изучать.

асм это далеко не низкоуровневая вещь, особенно в том виде, в котором ты его понимаешь.

vcerloman ()
Ответ на: комментарий от EXL

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

Если он станет веб-экспертом, то да. В остальном - нет.

Вакансии, подразумевающие знание Assembler и C, редки и на них в 99% случаев не берут людей без какого-либо опыта программирования.

Всё, что подразумевает си - подразумевает и асм за редкими исключениями.

vcerloman ()
Ответ на: комментарий от alexanius

ffgj

Лучше дай ему швабру и пусть полы моит. Ибо, коль решил ити тернистым путём пограмиста, то первое что он должен освоить — это поиск документации (и в частности не на русском).

beastie ★★★★★ ()

Подставил ты своего друга. Запутается без знания азов. Пусть начинает с Машины Тьюринга.

DukeNukem ()

азы

Петцольд Ч. - Код. Тайный язык информатики

Паронджанов В.Д. - Учись писать, читать и понимать алгоритмы. Алгоритмы для правильного мышления. Основы алгоритмизации

anonymous ()
Ответ на: комментарий от vcerloman

И он будет потерян. Ни один способный человек никогда не примет эти поделки. Он либо выпилит их, либо выпилится из темы сам.

Эээ а что не поделка тогда, стесняюсь спросить? Вообще методологически лучше всего изучать паскаль, но это для детей, взрослому человеку надо что-то более актуальное давать. Питон имхо как раз, хотя методологически сильно проигрывает.

асм это далеко не низкоуровневая вещь, особенно в том виде, в котором ты его понимаешь.

В каком я его понимаю и что тогда считать низкоуровневым?

alexanius ★★ ()
Ответ на: комментарий от alexanius

Эээ а что не поделка тогда, стесняюсь спросить?

Пистон, паскаль и далее по списку.

Вообще методологически лучше всего изучать паскаль,

На основании чего? Зачем кому-то нужен мусорный язык? «лучше» - это не более чем поверья из интернетов.

но это для детей, взрослому человеку надо что-то более актуальное давать.

Для детей, если ты хочешь получить из них баобабы. Если это твоя цель, то да.

Питон имхо как раз, хотя методологически сильно проигрывает.

В параллельной вселенной. Пистон - это скриптуха, которая используется неосиляторами для пускания внешней логики через биндинги. Как язык для написания хоть какой-то логики - оно попросту несостоятельно.

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

В каком я его понимаю и что тогда считать низкоуровневым?

Ты его понимаешь на уровне «я заучил пару паттернов дерьмо, и смог кое-как сваять хелворд».

Считается за низкоуровневое именно понимание платформы, а asm лишь интерфейс. Если ты воспринимаешь asm не как интерфейс, а как некую магию, то это магия. И эта магия ничем не отличается от любой другой.

vcerloman ()

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

Aber ★★★★☆ ()

+1 к Зубкову и +1 к тому что асм лучше изучать на микроконтроллерах (и это отменяет +1 к Зубкову)

  • Асм на микроконтроллерах типа AVR проще и прямолинейнее. Меньше инструкций, отдельная инструкция делает меньше вещей, не надо забивать голову конвеерами, кэшами, simd и прочей дребеденью, которая только мешает если хочется просто разобраться в азах.
  • Асм на микроконтроллерах имеет смысл. Начинающий не будет реализовывать оптимизированную версию какой-нибудь числодробилки, и останется ему только распихивать значения по регистрам чтобы делать сисколлы и библиотечные вызовы - а это, извините, не программирование на ассемблере, а мудачество, и к пониманию не приведёт.
  • Можно разобраться в многих других вещах, типа прерываний и низкоуровневой работы железа.
slovazap ★★★★★ ()

Если бы ТС хотел пайтон, он бы спрашивал пайтон. Но ему нужен асм.

Deleted ()

Итак, сын Андрея Столярова вкатился в тред. Палю схему успешного изучения программирования.

1) швиндувс на помойку, для изучения хорошо подойдет любая Линукса али ФРИ БСД.

2) пусть твой друг начинает изучать фри паскаль, на нем очень хорошо можно уяснить указатели.

3)далее пусть изучает ассемблер, чтобы научится работать с памятью.

4)далее, плавно переходит к чистому Си.

Когда будут проделаны эти предварительные шаги, можно уже будет наконец-то заняться серьезными вещами и заработком денег на python, java, js, php

NetSurf ()

Друг решил стать программистом.

а почему не аквалангистом? очередной долбак решил себя заживо похоронить

anonymous ()
Ответ на: комментарий от anonymous

заживо похоронить

Что это вдруг?

Deleted ()

Друг решил стать программистом.

А это как? После долгих-долгих мучительных размышлений, или утром встал и нечаяно пришла мысль: «А не стать ли мне программистом?»

Я ему прописал изучить азы ассемблера для того что бы понять суть сразу и потом при изучении Си и т.п. не терять время на долгое осознание всяких там стэков, регистров и прочих выравниваний памяти.

Если друг хочет зарабатывать, то ассемблер и Си ему вряд ли где не понадобится. Сразу ориенируйтесь на мейнстримные языки. Java, C#, Python, PHP и т.д.

Математика — достаточно школьного уровня. Поступать в универ пустая трата времени. Пусть запишется на обычные платные полугодовые и годовые курсы. Диплом нужен только идиотам-начальникам и госучереждениям покрывшимся мхом.

Ну сам подумай, куда его с сишкой и ассемблером возьмут? Если же у твоего друга нет мыслей зарабатывать, то пусть изучает, что хочет.

anonymous ()
Ответ на: комментарий от vvn_black

В моей реальности я не встречал хороших программистов без базы в виде высшего образования.

С точки зрения логики БАЗОЙ должна быть школа.

Если хочется стать практикующим программистом, то учёба в универе или институте потерянное время, полезно лишь для того чтобы познакомится с небыдло-девушками или откосить от армии. Для программиста высшее образование не нужно, оно избыточно. Гораздо полезнее учится в программерских курсах, платных разумеется. Там знания дают как концентрированный сок. В ВУЗ-ах левые, неактуальные и ненужные вещи пихают в голову.

ВУЗ должен выпускать учоных и окодемехов и всё, точка! Ну если там родители заранее, подоговрёности устроят своё чадо на тёплое место где-нибудь в учреждении где требуется корка учится в ВУЗе надо это без базара, а так нафик она эта вышка.

anonymous ()
Ответ на: комментарий от slovazap

Что-то такое я и имел в виду, поддерживаю целиком.

dsl ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.