Хотите научиться сборке, смутитесь о том, с чего начать
Просто, черт возьми, я заинтересовался обучением сборке. Проблема в том, что я не могу найти хорошую отправную точку...
Кажется, что доступно много ассемблеров (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. любите язык, когда пытаетесь узнать, не обмануто ли оно в противном случае.