MASMでのアセンブリでC言語ソースファイルの外部変数を参照する方法(Visual Studio2017)
Visual Studio2017を使用しています。
昔作ったx86の32ビット環境で動くプログラムを
x64で動かせるように移植しているのですが、x86側の一部のプログラムは
インラインアセンブラ(__asm)を使用しており、VS2017のx64コンパイラでは
インラインアセンブラが廃止になっているようでした。
そこで、別途*.asmファイル(MASM)を追加して、そこにアセンブリコードを移植しているのですが
C言語ソース側に定義している外部変数をasmファイル側で参照する方法(記述の仕方)がわかりませんでした。
具体的には以下のようなことがやりたいです。
■C言語ソース
extern void asm_func(void);
DWORD64 g_dwTest;
void func()
{
// 引数扱い(rcx,rdx,r8,r9...)とはしない事を前提
g_dwTest = 1;
asm_func();
}
■ASMソース
extern qword g_dwTest ; みたいなことをやりたい
.code
asm_func proc
mov rax, g_dwTest
ret
asm_func endp
end
私の調べ方が悪いのかMASMの書き方に関する情報が少なくわからなかったので
わかる方ご教授お願いいたします。