2012-05-22 3 views
8

Я хочу запрограммировать сборку 64-битных окон (желательно с использованием NASM). Я выглядел довольно, но в google, но кажется, что я не могу найти 64-битный компилятор Windows. На одном сайте упоминается ml64, но похоже, что он больше не включен в VC++. Я попытался с 32-битной сборкой, но, очевидно, она просто падает на моей 64-битной машине. Можно ли писать, компилировать и запускать 32-битные приложения для сборки на 64-битной машине Windows? Или он должен быть записан и скомпилирован для 64 бит?64-битный оконный ассемблер

Спасибо.

+0

Для записи, ml64.exe входит в моей установки VS2010. Я не уверен, что он включен в версию Express, хотя ... – PinnyM

+1

VS2010 Экспресс пользователь здесь, ml64.exe присутствует в папках Visual Studio/VC/bin/amd64 и bin/x86_amd64. – DCoder

+0

Если вы хотите использовать NASM, просто перейдите на http://nasm.us и загрузите версию NASM Win32. Он будет работать на 64-битной системе и будет создавать 64-битные приложения. –

ответ

6

Yasm (*) - это современный многоплатформенный сборщик NASM, который может собираться для наборов инструкций x86 и AMD64/x86-64.

Однако ... Что вы, вероятно, имеете в виду, так это то, что вам нужен линкер , чтобы связать собранный объектный код/​​файл (ы) для создания исполняемого файла. По крайней мере, полностью бесплатный проект MinGW (Minimal GNU для Windows) поставляется с компоновщиком (называемым ld), способным собирать как 32-, так и 64-разрядные исполняемые файлы Windows из объектных файлов (по крайней мере, в формате ELF и PE).

Вы можете перекрестно скомпилировать/построить 32-разрядные проекты в 64-разрядной среде и наоборот, учитывая, что вы поставляете правильные параметры командной строки ассемблеру и компоновщику. Для получения более точных сведений обратитесь к документации по вашему выбору.

*) http://yasm.tortall.net/

+0

Я думаю, что ld является только компоновщиком. –

+0

Это правильно. Спасибо, что указали это, я совершенно неправильно понял контекст в спешке и смешал терминологию. Я отредактировал и улучшил ответ для более подробной информации. – zxcdw

+0

Спасибо большое за сообщение. Я использую ld, чтобы связать его, но, похоже, он все еще терпит крах. Возможно ли, чтобы вы предоставили мне фрагмент кода сборки, который может компилироваться с yasm и быть связан с 64-битной системой, но написан на 32-битной сборке? Он ничего не должен делать. Просто компилируйте и запускайте без сбоев. Это было бы прекрасно. –

3

Можно писать, собирать и запускать 32-разрядную сборку на 64-битной Windows. Я написал несколько утилит в masm32 на моей машине Windows 7 x64. Если вы хотите собрать 64-битный код, я считаю, что FASM поддерживает 64-битный объектный код.

Смежные вопросы