Visual Studioでasmファイルを使う
x64ではインラインアセンブラが使えないので生のMASMを書く必要がある。
- asmファイルをプロジェクト内に追加する
- 追加したasmファイルのプロパティを開き、「カスタム ビルド ステップ」>「全般」の
- 「コマンドライン」に ml64 /c /Cx /W0 /Fo$(IntDir)\$(InputName).obj "$(InputPath)"
- 「出力ファイル」に $(IntDir)\$(InputName).obj
- 普通にビルド
- (゚Д゚)ウマー
ちなみにドライバ開発をやっているときは、
以下は例。
# # SOURCES (for driver development) # #... SOURCES=test.cpp I386_SOURCES=test.asm AMD64_SOURCES=test.asm
; ; test.asm for x64 ; ; pushad PUSHAD_AMD64 MACRO push r15 push r14 push r13 push r12 push r11 push r10 push r9 push r8 push rdi push rsi push rbp push rbp ; rsp push rbx push rdx push rcx push rax ENDM ; popad POPAD_AMD64 MACRO pop rax pop rcx pop rdx pop rbx pop rbp ; rsp pop rbp pop rsi pop rdi pop r8 pop r9 pop r10 pop r11 pop r12 pop r13 pop r14 pop r15 ENDM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; .CODE ; void RoutineName(void); RoutineName PROC PUSHAD_AMD64 POPAD_AMD64 ret RoutineName ENDP END
// // test.cpp // extern "C" void RoutineName(void); // ... RoutineName();
ちなみに x86 なら ml64 ではなくて ml になる。