Win32 ASM 自编函数库中的每个函数要分开文件编写
例如下面的操作注册表的函数库, 如果把它们放在 Reg.asm 中:
SetRegString proto _HKEY:dword, _lpszSubKey:dword, _lpszValueName:dword, _lpszString:dword
GetRegString proto _HKEY:dword, _lpszSubKey:dword, _lpszValueName:dword, _lpszBuffer:dword
SetRegDword proto _HKEY:dword, _lpszSubKey:dword, _lpszValueName:dword, _lpdwValue:dword
GetRegDword proto _HKEY:dword, _lpszSubKey:dword, _lpszValueName:dword, _lpdwValue:dword
DelRegValue proto _HKEY:dword, _lpszSubKey:dword, _lpszValueName:dword
编译生成 mylib.lib :
ml /c /coff Reg.asm
link -lib "Reg.obj" "/out:mylib.lib"
再在 test.asm 中只调用任一个库函数, 如: SetRegDword, 再反汇编查看, 发现上面 5 个函数都在 test.exe 中.
多出了无用的其它 4 个函数体. 这样你的程序是不是很不精简?
所以, 上面 5 个函数应该分开文件写, 即 SetRegString.asm 只含 SetRegString 函数, GetRegString.asm 只含
GetRegString 函数 ...... 再编译生成 mylib.lib :
ml /c /coff *.asm
link -lib "*.obj" "/out:mylib.lib"
这次编译查看 test.exe , 就只有要调用的一个函数 SetRegDword 在程序里面了.