Подтвердить что ты не робот

Каков наилучший способ изучения сборки x86 на платформе Linux?

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

Книга "Искусство Ассамблеи" выглядит хорошо, но она учит HLA. Мне неинтересно, что нужно учиться одному, а потом снова переучивать. Похоже, что архитектуры RISC имеют лучшие ресурсы для сборки, но, к сожалению, у меня нет RISC-процессора, с которым можно учиться. У кого-нибудь есть предложения?

4b9b3361

Ответ 1

http://asm.sf.net содержит некоторые материалы по архитектурам, кроме x86.

Если вас интересуют архитектуры RISC, вы можете запустить Linux на Qemu. Qemu эмулирует несколько архитектур RISC, таких как PowerPC, ARM и MIPS. Возможно, вы сможете найти готовый к использованию образ жесткого диска Qemu здесь.

Другим способом экспериментировать с архитектурой RISC было бы использование встроенного симулятора gdb.

Ответ 2

Я нашел Язык ассемблера шаг за шагом, чтобы быть очень хорошим ресурсом. Он имеет раздел в задней части, который также нацелен на сборку Linux.

Ответ 4

Есть действительно две части для обучения программированию на уровне сборки: основные понятия, а затем конкретные архитектуры. Если у вас не было никакого воздействия на asm-программирование, я настоятельно рекомендую вам сначала получить основы с простой, малой архитектурой, даже если она не применима напрямую к какому-либо реальному оборудованию. Если многие люди указывают на определенный ресурс, например "Искусство...", взгляните на него, используйте его, чтобы узнать, что такое архитектура, как использовать базовые инструменты (asm, debugger, disasm и т.д.).

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

Ответ 5

x86 сборка - это действительно язык интеллекта, который лучше всего изучается с помощью чипа Intel и платформы Windows, которая делает DOS

Если у вас что-то вроде WinXP, использовался интерпретатор DOS, который показал пользователю основы asm и позволил пользователю отменить команду и настроить код в реальном времени, а затем собрать код в блок, который может быть запустить на интерпретаторе

Он назывался "переводчиком Кетмана"

Это было только для DOS asm, но это было довольно уникально, потому что оно позволяло вам видеть, что происходит со всеми регистрами и флагами, и позволяет совершенно незнакомому человеку получить дескриптор логики

Ответ 6

Попробуйте http://www.emu8086.com, который является эмулятором 8086 с Windows-ассемблером с ассемблером и отладчиком. Он поставляется с учебником.

Ответ 7

Я изучил ассемблер x86 из книги о 8086 (который я не могу запомнить имя в настоящее время... он был явно довольно старым и фиолетовым. Если вы действительно заинтересованы, я могу выкопать его, когда я добраться до дома). Это только научит вас 16-битным вещам, для более продвинутых 32-битных вещей я прочитал несколько обучающих онлайн. Я никогда не делал 64 бит. По крайней мере, поначалу OS, на который вы нацеливаетесь, вероятно, не имеет значения, поскольку вы слишком низкоуровневы... BIOS - это все, что вам действительно нужно. Если у вас нет доступа к тестовой системе, эмулятор, вероятно, является хорошим выбором, как упомянули другие, но вы также можете создать себе 8088 или 8086 без особых проблем с дискретных частей. Вы можете легко найти учебники и схемы. Он должен стоить менее 50 долларов, и это отличный опыт - вы, по сути, строите материнскую плату с нуля.

Если вы не слишком привязаны к сборке x86 и хотите изучить RISC, я рекомендую Microchip PIC-микроконтроллеры. Вы можете забрать стартовый комплект менее чем за 50 долларов (PICKit 1, который у меня есть, даже работает под Linux). Они имеют обширную документацию и множество сторонних обучающих программ, направленных на любителей.

Ответ 9

Хотя многие люди, которых я знаю в школе, ненавидели эту книгу, я все равно свяжу ее:

http://www.amazon.com/Professional-Assembly-Language-Programmer/dp/0764579010

Основная причина, по которой я использовал эту книгу, состоит в том, что она использует x86 в Linux с помощью ассемблера GNU. Этот последний момент помог, так как я должен был использовать этот ассемблер в нашей школьной лаборатории, и если вы не знаете - синтаксис отличается от синтаксиса Intel.

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

Ответ 10

Искусство программирования языка сборки