Microsoft MVP성태의 닷넷 이야기
글쓴 사람
홈페이지
첨부 파일
 

Visual C++ / x64 환경에서 inline-assembly를 매크로 어셈블리로 대체하는 방법 - 두 번째 이야기

이전에 쓴 글이 있었는데,

Visual C++ / x64 환경에서 inline-assembly를 매크로 어셈블리로 대체하는 방법
; https://www.sysnet.pe.kr/2/0/1759

아래의 글에서 더 편리한 방법을 소개하고 있습니다.

x64 Inline Assembly in Windows Driver Kit
; https://rayanfam.com/topics/inline-assembly-in-x64/

그런데, 직접 해보니까 WDK 프로젝트인 경우에는 asm 파일을 자동으로 masm.exe에 태워 빌드해 주는 반면 일반 C/C++ 프로젝트에서는 그런 배려가 없습니다. 실제로 WDK 프로젝트에서 .asm 파일을 추가하는 경우 속성 창을 통해 보면 다음과 같이 "Item Type"으로 "Microsoft Macro Assembler" 항목이 자동으로 선택되어 있지만,

macro_assembly_x64_1.png

일반 Visual C++ 프로젝트에서는 .asm 파일의 속성을 보면 다음과 같이 "Does not participate in build"로 뜨는 데다 "Microsoft Macro Assembler" 항목도 없어 선택조차 못합니다.

macro_assembly_x64_2.png

그래도 어차피 비주얼 스튜디오인데... 방법이 있지 않을까 싶어 검색해 보니 다음의 글이 나옵니다. ^^

Visual Studio 2015에서 Assembly 실행(MASM)
; http://moomini.tistory.com/80

그렇습니다. 솔루션 탐색기에서 Visual C++ 프로젝트를 우 클릭해 "Build Dependencies" / "Build Customizations..."를 선택하면 다음과 같이 masm 항목을 추가할 수 있는 설정창이 뜹니다.

macro_assembly_x64_3.png

이렇게 선택해 주고, 다시 .asm 파일의 속성을 보면 "Microsoft Macro Assembler" 항목이 보이게 되고 이를 선택하면 .asm 파일이 자동으로 빌드되고 링크 과정에 참여하게 됩니다.





[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]





[최초 등록일: ]
[최종 수정일: 9/13/2018 ]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer@outlook.com

비밀번호

댓글 쓴 사람
 




... 16  17  18  [19]  20  21  22  23  24  25  26  27  28  29  30  ...
NoWriterDateCnt.TitleFile(s)
11814정성태2/12/20191276오류 유형: 512. VM(가상 머신)의 NT 서비스들이 자동 시작되지 않는 문제
11813정성태2/12/20191611.NET Framework: 809. C# - ("Save File Dialog" 등의) 대화 창에 확장 속성을 보이는 방법
11812정성태1/2/20201164오류 유형: 511. Windows Server 2003 VM 부팅 후 로그인 시점에 0xC0000005 BSOD 발생
11811정성태2/11/20191689오류 유형: 510. 서버 운영체제에 NVIDIA GeForce Experience 실행 시 wlanapi.dll 누락 문제
11810정성태2/11/20191217.NET Framework: 808. .NET Profiler - GAC 모듈에서 GAC 비-등록 모듈을 참조하는 경우의 문제
11809정성태2/11/20191532.NET Framework: 807. ClrMD를 이용해 메모리 덤프 파일로부터 특정 인스턴스를 참조하고 있는 소유자 확인
11808정성태2/8/20192067디버깅 기술: 123. windbg - 닷넷 응용 프로그램의 메모리 누수 분석
11807정성태1/29/20191715Windows: 156. 가상 디스크의 용량을 복구 파티션으로 인해 늘리지 못하는 경우 [3]
11806정성태1/29/20191454디버깅 기술: 122. windbg - 덤프 파일로부터 PID와 환경 변수 등의 정보를 구하는 방법
11805정성태1/28/20192356.NET Framework: 806. C# - int []와 object []의 차이로 이해하는 제네릭의 필요성 [4]파일 다운로드1
11804정성태1/24/20191722Windows: 155. diskpart - remove letter 이후 재부팅 시 다시 드라이브 문자가 할당되는 경우
11803정성태1/10/20191838디버깅 기술: 121. windbg - 닷넷 Finalizer 스레드가 멈춰있는 현상
11802정성태1/7/20191921.NET Framework: 805. 두 개의 윈도우를 각각 실행하는 방법(Windows Forms, WPF)파일 다운로드1
11801정성태1/1/20192094개발 환경 구성: 427. Netsh의 네트워크 모니터링 기능 [3]
11800정성태12/28/20181942오류 유형: 509. WCF 호출 오류 메시지 - System.ServiceModel.CommunicationException: Internal Server Error
11799정성태12/19/20182727.NET Framework: 804. WPF(또는 WinForm)에서 UWP UI 구성 요소 사용하는 방법 [3]파일 다운로드1
11798정성태12/19/20182508개발 환경 구성: 426. vcpkg - "Building vcpkg.exe failed. Please ensure you have installed Visual Studio with the Desktop C++ workload and the Windows SDK for Desktop C++"
11797정성태3/7/20201716개발 환경 구성: 425. vcpkg - CMake Error: Problem with archive_write_header(): Can't create '' 빌드 오류
11796정성태12/19/20181587개발 환경 구성: 424. vcpkg - "File does not have expected hash" 오류를 무시하는 방법
11795정성태12/19/20182742Windows: 154. PowerShell - Zone 별로 DNS 레코드 유형 정보 조회 [1]
11794정성태12/17/20181523오류 유형: 508. Get-AzureWebsite : Request to a downlevel service failed.
11793정성태12/16/20181747개발 환경 구성: 423. NuGet 패키지 제작 - Native와 Managed DLL을 분리하는 방법
11792정성태12/11/20182052Graphics: 34. .NET으로 구현하는 OpenGL (11) - Per-Pixel Lighting파일 다운로드1
11791정성태6/23/20202081VS.NET IDE: 130. C/C++ 프로젝트의 시작 프로그램으로 .NET Core EXE를 지정하는 경우 닷넷 디버깅이 안 되는 문제 [1]
11790정성태12/11/20181887오류 유형: 507. Could not save daemon configuration to C:\ProgramData\Docker\config\daemon.json: Access to the path 'C:\ProgramData\Docker\config' is denied.
11789정성태12/10/20183956Windows: 153. C# - USB 장치의 연결 및 해제 알림을 위한 WM_DEVICECHANGE 메시지 처리파일 다운로드1
... 16  17  18  [19]  20  21  22  23  24  25  26  27  28  29  30  ...