我编写了使用 WINAPI 库(特别是 WSA - Sockets)的 ac 程序,而不是编译源代码,而是要求编译器发出汇编源代码,而不是研究它在较低级别上的工作方式。
当遇到下面的这一行时,我注意到在程序集中没有引用我的 WINAPI 函数的第一个参数。WSAStartup 中的函数 MAKEWORD。
这里到底发生了什么?我的汇编代码中没有对 MAKEWORD 的引用,而是提示了 push 514。
; source code : if (WSAStartup(MAKEWORD(2,2),&wsa) != 0)
lea eax, DWORD PTR _wsa$[ebp] ;_wsa$ is second arg
push eax
push 514 ; 00000202H ???
call DWORD PTR __imp__WSAStartup@8
test eax, eax
je SHORT $LN4@main
注意: WSAStartup 函数启动进程对 Winsock DLL 的使用。
如果需要,我可以提供更多信息