Хотите научиться сборке, смутитесь о том, с чего начать

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

Кажется, что доступно много ассемблеров (FASM, NASM, YASM, MASM), но каждый имеет свой собственный отдельный синтаксис, команды и функции. FASM представляется наиболее удобным, так как он может скомпилировать исполняемые файлы без компоновщика, но я не смог найти никаких учебников, чтобы начать меня. Все примеры "Hello World", которые я видел, это 16 или 32-разрядные, но я работаю на 64-битной Windows, поэтому никто из них не работает. Примеры Windows, включенные в работу FASM, но я не хочу с самого начала заходить в программирование Windows, сначала хочу понять основы.

Может ли кто-нибудь указать мне в правильном направлении?

Ответ 1

Если вы хотите научиться читать сборку, я рекомендую научиться использовать WInDbg или IDA Pro в качестве основного отладчика - изучая не только то, что делают инструкции, но и то, как компилятор С++ идиоматически переводит ваш исходный код в сборку, поможет вам узнайте гораздо лучше, чем если бы вы надуманные примеры сборки на 100%

Ответ 2

Я не эксперт по сборке, но это важная вещь, по крайней мере, для того, чтобы быть знакомой с ней в области вычислений. В классе компьютерной инженерии мы использовали SPIM Джеймсом Лауром, симулятором архитектуры MIPS для окон. Я думаю, что это хорошая отправная точка. Вы можете найти чит-лист MIPS через поиск Google, а также некоторые учебные пособия.

Сборка классная, потому что это, по сути, машинный язык. Счастливый взлом!

Ответ 3

32-разрядные примеры должны работать, даже если ваша ОС хоста 64-разрядная.

Кроме того, это разница между 32- и 64-разрядным Hello World всего двумя символами:

include 'win64ax.inc'

против

include 'win32ax.inc'

Ответ 4

Это лучшее x86 введение ASM, которое я нашел:

http://www.drpaulcarter.com/pcasm/

На этой странице есть pdf-версия его книги. Он начинается с самых оснований и работает. Я получил все основные знания ASM, которые мне нужны только с этой книгой (создание фреймов стека, вызывание соглашений, c interop, просто для обозначения пары).

Ответ 5

Просто скучно учиться ассемблеру без каких-либо целей.

Могу ли я рекомендовать вам купить любой комплект роботов? Как я знаю, роботы RoboSavvy управляются assmeblers/C.. У других может быть только DSL.

http://robosavvy.com/site/

P.S. Я научился ассемблеру, когда мне нужно было обманывать игры. Но сегодня я бы выбрал комплекты роботов.

Ответ 6

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