문제

MASM 6.11에서 제공되는 도구를 사용하여 이러한 모든 빌드 프로세스가 수행되는 것처럼 코드를 효과적으로 컴파일/링크/빌드하는 동시에 Visual Studio 2008을 최대한 활용하고 싶습니다.MASM의 정확한 버전은 중요하지 않습니다. 6.x 범위 내에 있으면 우리 대학에서 16비트 어셈블리를 가르치는 데 사용하기 때문입니다.

나는 이 주제에 대해 몇 가지 연구를 수행한 결과 몇 가지 옵션이 있다는 결론에 도달했습니다.

  1. MASM 6.11이 기본적으로 수행하는 것과 동일한 플래그 등을 사용하여 MASM 6.11 실행 파일을 호출하도록 VS를 재구성하십시오.
  2. VS에서 호출할 중간 배치 파일을 생성한 다음 MASM 링커 등에 대한 적절한 명령을 호출합니다.
  3. MASM 6.11에서 사용하는 것과 동일한 환경을 제공하기 위해 VS의 내장 빌드 도구/규칙(어셈블러, 링커 등)을 재구성합니다.

옵션 (2)는 VS의 "외부 도구" 인터페이스에서 사용할 수 있는 옵션이 MASM의 빌드 도구를 올바르게 호출하는 데 충분하지 않을 수 있다는 것을 깨달았을 때 나타났습니다. 따라서 VS의 엄격한 인수 전달 방법을 해석하는 배치 파일이 도움이 될 수 있습니다. 이 작업을 수행하는 방법에 대해 배운 과정에는 명령 프롬프트에서 ML.exe, LINK.exe 등을 수동으로 호출하는 작업이 포함되었습니다.

아래에는 내 질문에 답하는 데 도움이 될 수 있는 몇 가지 링크가 있습니다.나는 그것들을 모두 읽었으며 실제 해결책은 없다는 점을 명심하십시오.MASM 6.11을 지정하는 것이 누군가가 더 일반화된 답변을 제공하는 것을 방해하지 않기를 바랄 뿐입니다.

옵션 (2)와 비슷한 방법이 사용되지만 스레드의 사용자에게 연락할 수 없습니다.
http://www.codeguru.com/forum/archive/index.php/t-284051.html
(또한 중간 배치 파일의 필요성에 대해서도 의구심이 있습니다)

내 질문에 대한 오래된 설명:
http://www.cs.fiu.edu/~downeyt/cop3402/masmaul.html

아마도 내가 확실한 해결책에 도달한 가장 가까운 것은 MASM 이외의 도구 모음을 참조하고 배치 파일도 사용하는 것입니다.
http://www.kipirvine.com/asm/gettingStarted/index.htm#16비트

코드 -> exe 프로세스의 각 단계에서 사용되는 도구에 대한 용어가 꺼져 있다면 사과드립니다. 하지만 코드 작성이 완료되고 실행 파일이 생성되는 사이의 전체 단계를 재현하려고 하므로 그렇게 하지 않습니다. 매우 중요하다고 생각합니다.

도움이 되었습니까?

해결책

(32비트 시스템 제거)에 MASM 규칙 파일이 있습니다. (x86)):

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\VCProjectDefaults\masm.rules

해당 파일을 프로젝트 디렉터리에 복사하고 프로젝트의 사용자 지정 빌드 규칙에 추가합니다.그런 다음 "규칙 파일 수정..."을 선택하고 MASM 빌드 규칙과 "빌드 규칙 수정..."을 선택합니다.

속성을 추가합니다:

  • 사용자 속성 유형:
  • 기본값: *.inc
  • 설명: 추가 MASM 파일 종속성을 추가합니다.
  • 이름 표시하기: 추가 종속성
  • 읽기 전용: 거짓
  • 이름: 추가종속성
  • 속성 페이지 이름: 일반적인
  • 스위치: [값]

추가 종속성 값을 다음으로 설정합니다. [추가종속성].이제 빌드가 자동으로 변경 사항을 감지해야 합니다. *.inc, 개별 asm 파일의 속성을 편집하여 다른 항목을 지정할 수 있습니다.

다른 팁

Makefile 프로젝트를 생성할 수 있습니다.Visual Studio의 파일 / 새로 만들기 / 프로젝트에서 Visual C++ / Makefile 프로젝트를 선택합니다.

이를 통해 임의의 명령을 실행하여 프로젝트를 빌드할 수 있습니다.C/C++일 필요는 없습니다.전통적인 NMake makefile일 필요도 없습니다.배치 파일과 NAnt 스크립트를 사용하여 드라이버를 컴파일하는 데 사용했습니다.

MASM 6.x 툴체인을 실행하는 것은 매우 쉽습니다.

파일 확장자에 따라 사용자 정의 빌드 규칙을 정의하는 것이 좋습니다.(적어도 Professinal Edition에서는 Visual Studio 2008에서 배포 가능한 .rules 파일을 생성할 수 있습니다.)여기에서 asm 파일에 대한 사용자 정의 빌드 도구를 정의할 수 있습니다.이 접근 방식을 사용하면 링커 단계를 그대로 둘 수 있습니다.

예전에는 MASM32를 사용했습니다. 링크 텍스트 학생들이 어셈블리를 배울 수 있도록 도와주는 IDE입니다.어셈블하고 링크하기 위해 수행하는 작업을 배치 파일에서 확인할 수 있습니다.

배치 파일 대신 파일에 정의된 사용자 정의 빌드 단계를 사용하는 것은 어떨까요?

Visual Studio를 사용하려는 경우 빈 인라인 어셈블리 블록이 있는 함수를 호출하는 콘솔 앱에 대한 진입점이 있는 C/C++의 뼈대 프로젝트를 제공하고 그 안에 결과를 채우도록 할 수 없습니까?

Irvine의 가이드를 활용해 보는 것은 어떨까요?Irvine의 라이브러리는 훌륭하며 원한다면 이를 무시하고 Windows 프로세스로 직접 작업할 수 있습니다.이와 같은 가이드를 검색했는데 Irvine이 최고의 솔루션이었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top