Chaos.Head 发表于 2013-1-16 23:00:07

初学win32汇编,虚心求教大家一个问题

mov @stWndClass.hCursor,eax
push hInstance
pop @stWndClass.hInstance
mov @stWndClass.cbSize,sizeof WNDCLASSEX
mov @stWndClass.style,CS_HREDRAW or CS_VREDRAW
mov @stWndClass.lpfnWndProc,offset _ProcWinMain
mov @stWndClass.hbrBackground,COLOR_WINDOW + 1
mov @stWndClass.lpszClassName,offset szClassName
invoke RegisterClassEx,addr @stWndClass

小甲鱼老师讲得解析窗口程序,
push hInstance
pop @stWndClass.hInstance

是因为 mov 主存,主存 是不允许的

但是
mov @stWndClass.lpfnWndProc,offset _ProcWinMain
这条语句为什么可以呢
这个不也是把_ProcWinMain的内存首地址 赋给@stWndClass.lpfnWndProc么

虚心求教大家
谢谢!!!

韩中男孩 发表于 2013-1-18 23:48:06

@stWndClass 是一个数据结构
lpfnWndProc 是其中的一个成员,应该是一个指针变量,存放窗口过程的首地址

Chaos.Head 发表于 2013-1-20 23:42:48

额。。。似懂非懂。。。。

lxf5556 发表于 2013-1-22 23:51:09

QQ1799547275 加一下共同学习

n2zee 发表于 2013-1-25 19:27:28

哈哈,32位不会,学破解的时候再说。

Chaos.Head 发表于 2013-1-26 01:26:14

=。= 身边都是搞应用开发的。。。没有人一起研究汇编。。。。

メ㊣逆ご帅☆ 发表于 2013-1-26 12:17:31

不是因为不允许把,只是节省字节
是因为push pop只占2字节
而mov看操作数不同所占字节也不同,你那句mov应该是占5或4字节,不过mov效率应该会比较高,毕竟一个是栈操作,而且那个push pop也有限制,操作数必须是4字节

メ㊣逆ご帅☆ 发表于 2013-1-26 12:20:09

另外,2楼说的是对的,offset是取偏移的,所以传的是_ProcWinMain的偏移

Chaos.Head 发表于 2013-1-27 11:23:05

多谢各位的解答

wting_0128 发表于 2013-4-26 12:59:14

迷惑中..

deosky 发表于 2013-4-27 15:06:20

我只是路过打酱油的。
页: [1]
查看完整版本: 初学win32汇编,虚心求教大家一个问题