初学win32汇编,虚心求教大家一个问题
mov @stWndClass.hCursor,eaxpush 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么
虚心求教大家
谢谢!!!
@stWndClass 是一个数据结构
lpfnWndProc 是其中的一个成员,应该是一个指针变量,存放窗口过程的首地址 额。。。似懂非懂。。。。 QQ1799547275 加一下共同学习 哈哈,32位不会,学破解的时候再说。 =。= 身边都是搞应用开发的。。。没有人一起研究汇编。。。。 不是因为不允许把,只是节省字节
是因为push pop只占2字节
而mov看操作数不同所占字节也不同,你那句mov应该是占5或4字节,不过mov效率应该会比较高,毕竟一个是栈操作,而且那个push pop也有限制,操作数必须是4字节 另外,2楼说的是对的,offset是取偏移的,所以传的是_ProcWinMain的偏移 多谢各位的解答 迷惑中..
我只是路过打酱油的。
页:
[1]