Обучение программированию на ассемблере - Полезные ресурсы [закрыто]
10
Следуя предыдущей теме, я заинтересовался изучением программирования на ассемблере. Не столько для того, чтобы хотеть программировать полезные приложения, просто чтобы почувствовать низкоуровневое программирование, чтобы лучше понять, что происходит.
Кто-нибудь может порекомендовать какие-либо книги или онлайн-ресурсы для начинающих?
Мне также понравился этот сайт . Хорошее введение в программирование сборки! Я использовал этот сайт в качестве справочного материала при изучении моего курса по микропроцессорам и микроконтроллерам.
Отлично ... спасибо. Из интереса, насколько интуитивно вы нашли его изучение по сравнению с типичным современным языком? Моя история 6 месяцев C # (в промышленности) и примерно в то же время C ++ (в моей спальне :))
Даррен Янг
1
Я сталкивался с программированием на ассемблере в моем курсе (я еще студент), и, как вы сказали в своем вопросе, было полезно знать, как работают встроенные системы и все такое. Тем не менее, по сравнению с языками высокого уровня (как вы говорите, современными), я нашел это не очень полезным. Вы знаете, никогда не буду использовать это в моей области - веб-разработка. :)
екомбинатор
2
Это академическое упражнение или вы собираетесь использовать язык ассемблера, который вы изучаете? Это довольно специализированный материал в наши дни. Оптимизация компилятора стала настолько хорошей, что даже что-то вроде высокопроизводительного жесткого диска обычно содержало бы около 1% его кода, написанного на ассемблере. Продвигаясь вниз по пищевой цепочке к 4-битным или некоторым 8-битным процессорам, вы увидите гораздо больше используемого языка ассемблера.
Если вы действительно хотите попробовать язык ассемблера, выберите процессор с хорошим набором команд. Я бывший сотрудник ARM, поэтому, вероятно, я предвзят, но я обнаружил, что набор инструкций ARM особенно прост в изучении - я смог написать эффективный FIR-фильтр в asm на третий день работы в компании. Сегодня партнеры ARM поставляют около миллиарда ядер ARM в квартал, поэтому довольно легко найти компанию, которая готова использовать ваш опыт ARM ASM.
Есть много плат ARM eval, доступных примерно за 50 долларов, чтобы опробовать ваш код - похоже, ARM Cortex M3 будет очень популярен. Он использует набор команд ARM Thumb2, который немного сложнее, чем обычный ARM32-код, но все же довольно простой и очень мощный.
Это чисто академическое / самообучение. Я хотел бы лучше понять управление памятью низкого уровня, а также языки более высокого уровня.
Даррен Янг
1
В основном, в смысле программирования на ассемблере, вам нужно сначала знать базовую архитектуру, а затем соответствующий язык, например, с микроконтроллерами PIC, вы можете использовать предоставленный компилятор и язык. Я использую этот сайт для ссылок на учебники по микроконтроллерам PIC.
Я всегда обнаруживал, что самой сложной частью был hello world, который обычно представляет собой обычную функцию ассемблера, вызываемую из более высокого уровня, например сложение двух чисел. Как только вы преодолеете это препятствие, это просто вопрос добавления инструкций и псевдоопераций (например, определения данных) в ваш репертуар.
Я бы второй гикбрит, хотя я никогда не использовал ARM. Такая минимальная архитектура была бы не только проще, но и могла бы оказаться ближе всего к тому, чтобы иметь законную - в противоположность только дидактической цели.
У меня есть набор инструкций, ассемблер и симулятор с некоторыми уроками, которые были созданы именно для этой цели. У меня пока нет отзывов о том, насколько хорошо или плохо я это сделал, но там есть, дайте ему 15 минут или полчаса, посмотрите, научит ли вас что-нибудь. http://github.com/dwelch67/lsasim После этого у меня есть несколько основных симуляторов набора команд, которые вы также можете попробовать, простые, без излишеств, должны запускаться везде, где у вас есть компилятор C, и т. д.
Ответы:
Рекомендуемая книга: Искусство программирования на ассемблере .
Мне также понравился этот сайт . Хорошее введение в программирование сборки! Я использовал этот сайт в качестве справочного материала при изучении моего курса по микропроцессорам и микроконтроллерам.
источник
Это академическое упражнение или вы собираетесь использовать язык ассемблера, который вы изучаете? Это довольно специализированный материал в наши дни. Оптимизация компилятора стала настолько хорошей, что даже что-то вроде высокопроизводительного жесткого диска обычно содержало бы около 1% его кода, написанного на ассемблере. Продвигаясь вниз по пищевой цепочке к 4-битным или некоторым 8-битным процессорам, вы увидите гораздо больше используемого языка ассемблера.
Если вы действительно хотите попробовать язык ассемблера, выберите процессор с хорошим набором команд. Я бывший сотрудник ARM, поэтому, вероятно, я предвзят, но я обнаружил, что набор инструкций ARM особенно прост в изучении - я смог написать эффективный FIR-фильтр в asm на третий день работы в компании. Сегодня партнеры ARM поставляют около миллиарда ядер ARM в квартал, поэтому довольно легко найти компанию, которая готова использовать ваш опыт ARM ASM.
Есть много плат ARM eval, доступных примерно за 50 долларов, чтобы опробовать ваш код - похоже, ARM Cortex M3 будет очень популярен. Он использует набор команд ARM Thumb2, который немного сложнее, чем обычный ARM32-код, но все же довольно простой и очень мощный.
Эта маленькая доска выглядит очень круто, за 80 евро: http://www.olimex.com/dev/stm32-103stk.html
источник
В основном, в смысле программирования на ассемблере, вам нужно сначала знать базовую архитектуру, а затем соответствующий язык, например, с микроконтроллерами PIC, вы можете использовать предоставленный компилятор и язык. Я использую этот сайт для ссылок на учебники по микроконтроллерам PIC.
источник
Я всегда обнаруживал, что самой сложной частью был hello world, который обычно представляет собой обычную функцию ассемблера, вызываемую из более высокого уровня, например сложение двух чисел. Как только вы преодолеете это препятствие, это просто вопрос добавления инструкций и псевдоопераций (например, определения данных) в ваш репертуар.
Я бы второй гикбрит, хотя я никогда не использовал ARM. Такая минимальная архитектура была бы не только проще, но и могла бы оказаться ближе всего к тому, чтобы иметь законную - в противоположность только дидактической цели.
источник
У меня есть набор инструкций, ассемблер и симулятор с некоторыми уроками, которые были созданы именно для этой цели. У меня пока нет отзывов о том, насколько хорошо или плохо я это сделал, но там есть, дайте ему 15 минут или полчаса, посмотрите, научит ли вас что-нибудь. http://github.com/dwelch67/lsasim После этого у меня есть несколько основных симуляторов набора команд, которые вы также можете попробовать, простые, без излишеств, должны запускаться везде, где у вас есть компилятор C, и т. д.
источник