Запись сборки x86 на 64-битном процессоре - PullRequest
7 голосов
/ 24 декабря 2011

Например, я использую 64-битную Windows 7, но кажется, что все лучшие ресурсы для изучения ассемблера говорят о x86. Если запись x86 на x64 возможна, как лучше это сделать? Существуют ли конвертеры? Кроме того, каковы хорошие ресурсы для 64 бит программирования на ассемблере?

Ответы [ 3 ]

4 голосов
/ 24 декабря 2011

Большинство 64-битных операционных систем могут без проблем запускать 32-битные двоичные файлы. Так как ваш вопрос помечен [windows], у вас все будет хорошо. Если вы будете следовать инструкциям по созданию 32-битного двоичного файла из ваших руководств, то полученные двоичные файлы должны работать без изменений. Если вы используете другой набор инструментов, вам может потребоваться найти флаг, который указывает ассемблеру создавать 32-битный, а не 64-битный код.

Различия между 32- и 64-битным программированием на ассемблере довольно незначительны. Есть несколько новых и улучшенных инструкций для обработки 64-битных типов, а также некоторые новые имена регистров. Есть новый ABI, с которым тоже нужно бороться. У Intel есть Руководства для разработчиков программного обеспечения, в которых описаны все возможные инструкции и принципы их работы.

3 голосов
/ 24 декабря 2011

x86 определенно не лучшая, во-первых, сборка для изучения.если это вообще последний, который вы хотите выучить.checkout https://github.com/dwelch67 lsasim - это набор инструкций, предназначенный для изучения ассемблера.pcemu_samples - это модифицированный pcemu (эмулятор 8086/88, способный запускать dos), с удаленными вызовами bios / dos, специально для изучения ассемблера 8088/86.Я рекомендую, когда вы подходите к сборке x86, вы начинаете с 8088/86, что-то вроде pcemu_samples (где вы вынуждены сосредоточиться на ассемблере, а не на системных вызовах).dosbox и bochs могут запускать программы 8088/86 с dos / bios, когда вы хотите перейти к системным вызовам.Затем перейдите к 32- и 64-разрядным улучшениям, многоядерности и тому подобному.

Вы получите большую пользу, изучив x86 последним.msp430, вещь lsasim выше, рука, большой палец (не thumb2) - все это хорошие отправные точки.Изучение нескольких различных наборов инструкций, по крайней мере, если не много, также принесет вам большую пользу.У меня есть симуляторы для некоторых из них, которые дают вам хорошее представление о том, что происходит, я рекомендую сначала изучить симуляторы, на симуляторах вы можете получить наглядность.

если вы начнете с 8088/86, затем перейдите к 386 /486, а затем отправьте в x64 другие ответы, которые вы получаете по поводу инструкций (sorta), работающих везде, будет иметь большой смысл.

1 голос
/ 24 декабря 2011

x64 в большинстве случаев может без проблем запускать приложения x86. В ABI есть некоторые различия, но если вы просто хотите изучить программирование на ассемблере, любой ресурс x86, на который вы смотрите, должен подойти Что касается изучения ассемблерного программирования, то это более широкий вопрос. Возможно, вы захотите взглянуть на NASM , чтобы начать.

...