2012-05-22 7 views
8

64 비트 윈도우 어셈블리 (바람직하게는 NASM 사용)를 프로그래밍하고 싶습니다. 나는 꽤 보였지만 구글에서는 64 비트 윈도우 컴파일러를 찾을 수 없다. 일부 사이트에서는 ml64에 대해 언급했지만 VC++에는 더 이상 포함되지 않는 것처럼 보입니다. 32 비트 어셈블리로 시도했지만 분명히 내 64 비트 시스템에서 충돌이 발생합니다. 64 비트 Windows 시스템에서 32 비트 어셈블리 응용 프로그램을 작성, 컴파일 및 실행할 수 있습니까? 또는 64 비트 용으로 작성하고 컴파일해야합니까?64 비트 윈도우 어셈블러

감사합니다.

+0

는 ml64.exe은 VS2010의 내 설치에 포함되어 있습니다. 그래도 익스프레스 버전에 포함되어 있는지 확실하지 않습니다 ... – PinnyM

+1

VS2010 익스프레스 사용자 인 경우 ml64.exe는 Visual Studio/VC/bin/amd64 및 bin/x86_amd64 폴더에 있습니다. – DCoder

+0

NASM을 사용하려면 http://nasm.us로 가서 Win32 버전의 NASM을 다운로드하십시오. 64 비트 시스템에서 실행되며 64 비트 응용 프로그램을 생성합니다. –

답변

6

Yasm (*)은 x86 및 AMD64/x86-64 명령어 세트 모두에 대해 어셈블 할 수있는 최신 멀티 플랫폼 NASM 재 작성 어셈블러입니다.

그러나 ... 아마도 조립품 코드/파일을 실행 파일을 만들기 위해 링크하려면 링커이 필요합니다. 적어도 완전히 무료 인 MinGW (Windows 용 Minimal GNU) 프로젝트 패키지는 32 비트 및 64 비트 Windows 실행 파일을 객체 파일 (ELF 및 PE 객체 형식)에서 어셈블 할 수있는 링커 (ld)와 함께 제공됩니다.

정확한 명령 줄 매개 변수를 어셈블러와 링커에 제공하면 64 비트 환경에서 32 비트 프로젝트를 크로스 컴파일하거나 빌드 할 수 있습니다. 보다 자세한 내용은 choise의 도구 문서를 참조하십시오.

*) 기록을 위해 http://yasm.tortall.net/

+0

필자는 단지 링커 일 뿐이라고 생각합니다. –

+0

맞습니다. 그것을 지적 해 주셔서 고마워요, 나는 완전히 문맥을 급하게 오해하고 용어를 섞었다. 나는 세부 사항을 위해 대답을 편집하고 향상시켰다. – zxcdw

+0

게시물에 감사드립니다. 링크를 사용하기 위해 ld를 사용하고 있지만 여전히 충돌하는 것 같습니다. yasm으로 컴파일하고 64 비트 시스템에 링크 될 수 있지만 32 비트 어셈블리로 작성된 어셈블리 코드 스 니펫을 제공 할 수 있습니까? 아무것도 할 필요가 없습니다. 충돌없이 컴파일하고 실행할 수 있습니다. 그게 좋을거야. –

3

64 비트 Windows에서 32 비트 어셈블리를 작성, 어셈블 및 실행할 수 있습니다. 필자는 Windows 7 x64 시스템에서 masm32에 몇 가지 유틸리티를 작성했습니다. 64 비트 코드를 어셈블하려면 FASM이 64 비트 오브젝트 코드를 지원한다고 생각합니다.

관련 문제