dabor                   

  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  131 随笔 :: 0 文章 :: 101 评论 :: 0 Trackbacks

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 在程序里面了.
posted on 2006-07-03 11:54 dabor 阅读(742) 评论(1)  编辑 收藏 引用 所属分类: 05 技巧会聚

评论

# re: Win32 ASM 自编函数库中的每个函数要分开文件编写 2007-06-17 00:43 woainhi
386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
.data
szTitle db "Hello", 0
szText db "Hello, World", 0
.code
start:
invoke MessageBox, NULL, addr szText, addr szTitle, MB_OK or MB_ICONINFORMATION
invoke ExitProcess, NULL
end start  回复  更多评论
  

只有注册用户登录后才能发表评论。