Добрый день. Переписываю тут старый masm код в fasm. На masme Код (Text): ClientInfo struct client_socket dd ? client_ip in_addr <> ClientInfo ends . . . mov eax, (ClientInfo ptr [esi]).client_socket Как это на fasme - ??? Код (Text): struct ClientInfo client_socket dd ? client_ip in_addr ends . . . mov eax, (ClientInfo ptr [esi]).client_socket <------ ???????? Как эту строку переписать на фасме ??? Спасибо.
может так , так проходит, может как-то красивее можно? Код (Text): locals cinf ClientInfo endl lea esi, [dataz] mov [cinf],esi mov eax, [cinf.client_socket]
да выше мальсть не ту структуру описал Код (Text): ClientInfo struct client_socket dd ? client_ip in_addr <> ClientInfo ends
Не ругайте в асме не силен, но учусь) а можно еще вопрос? вот в masm - е Код (Text): WaitForClientConnections proc sersock :DWORD local client_address : sockaddr_in local lpThreadId : DWORD ... mov lpThreadId, sizeof sockaddr_in ; ???? invoke accept,sersock, addr client_address,addr lpThreadId А fasm - е это же работает так ... Код (Text): proc WaitForClientConnections ,sersock locals client_address sockaddr_in lpThreadId dw 0 endl mov [lpThreadId], 10h ;sizeof sockaddr_in ; ???? lea esi, [lpThreadId] lea edi, [client_address] invoke accept,[sersock], edi,esi Вот так конечно работает, но как-то у меня криво оно выглядит с этими регистрами. Можно как-то иначе переписать вызов accept() на fasm -e ???
_sheva740 Код (Text): mov [lpThreadId], sizeof.sockaddr_in invoke accept,[sersock], addr client_address,addr lpThreadId Для использования addr нужно подключить win32ax.inc вместо win32a.inc. Но в любом случае это будет заменено на те же lea, но через регистр edx. Поэтому смысла в этом немного.