2015-04-06 2 views
-1

Я пытался использовать книгу Hacking: Art of Deception для изучения сборки и программирования. Он имеет отличный раздел программирования, который дает вам большую оценку внутренней работы программы и дает вам более полное представление о том, насколько точно, когда программирование важно. Тем не менее, мне было нелегко следовать, потому что книга использует 32-битные примеры, и я использую 64-битную систему. Я знаю, как скомпилировать с gcc на 32bit, или я также настроюсь на 32-битный компакт-диск с книгой, но я думаю, что я предпочел бы изучить 64-битный, потому что он, вероятно, более уместен, чем 32-битные системы (или становятся все более актуальными?). Поэтому, в основном, я пытаюсь спросить, должен ли я даже попытаться использовать эту книгу, чтобы разобраться в 64-битной сборке, потому что я слышал, что она сильно отличается или я должен найти другой материал для изучения 64-битной сборки отдельно? Если есть какие-либо легко понятные книги, которые охватывают 64-битную сборку Intel, я был бы признателен за ссылку.Learn 64bit Assembly from 32bit Инструкция

+0

Итак, мы говорим x86 и x64 здесь? Вероятно, да? Если это так, они действительно совсем не такие разные. По сути, это то же самое. Меньше изменения, чем от 16 до 32 бит. – harold

+0

Я не думаю, что этот форум - подходящее место для этого вопроса. –

+1

Это мнение основано, но я считаю, что если у вас уже есть книга, чтобы изучить 32-битную сборку, и вы еще не являетесь огромным wiz на собрании, это стоит изучить. Затем изучите 64-битные, и вы поймете и оцените различия. Это в целом обогатит ваш опыт. Но вы не можете использовать 32-битную сборку, чтобы изучить 64-разрядный язык ассемблера. – lurker

ответ

1

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

После того как вы узнаете, как работает 32-разрядная версия, следующее краткое описание того, что добавляет 64-бит, будет бриз.

Количество регистров было удвоено до 16.

Все регистры имеют длину 64 бита. 64-разрядные расширения регистров IA32 называются% rax,% rcx,% rdx,% rbx,% rsi,% rdi,% rsp и% rbp. Новые регистры называются% r8-% r15.

Доступ к 32-разрядным регистрам младшего разряда каждого регистра возможен напрямую. Это дает нам знакомые регистры из IA32:% eax,% ecx,% edx,% ebx,% esi,% edi,% esp и% ebp, а также восемь новых 32-разрядных регистров:% r8d-% r15d.

Доступ к 16-разрядным регистрам младшего разряда каждого регистра можно получить непосредственно, как в случае с IA32. Версии новых регистров в текстовом формате называются% r8w-% r15w.

Доступ к 8-битным регистрам младшего порядка каждого регистра можно получить непосредственно. Это верно в IA32 только для первых четырех регистров (% al,% cl,% dl,% bl). Варианты байтов других регистров IA32 называются% sil,% dil,% spl и% bpl. Версии новых регистров байтов называются% r8b-% r15b.

Для обратной совместимости второй байт регистров% rax,% rcx,% rdx и% rbx может быть напрямую доступен инструкциями, имеющими однобайтовые операнды.

Текст из Computer Systems A Programmer’s Perspective