Как на fasm-е обратиться к структуре?

Тема в разделе "WASM.BEGINNERS", создана пользователем _sheva740, 9 сен 2009.

  1. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Добрый день.
    Переписываю тут старый masm код в fasm.
    На masme

    Код (Text):
    1.     ClientInfo struct
    2.         client_socket   dd ?
    3.         client_ip       in_addr <>
    4.     ClientInfo ends
    5.     .
    6.     .
    7.     .
    8.  
    9.     mov eax, (ClientInfo ptr [esi]).client_socket
    Как это на fasme - ???

    Код (Text):
    1.     struct ClientInfo
    2.         client_socket   dd ?
    3.         client_ip       in_addr
    4.     ends  
    5.     .
    6.     .
    7.     .
    8.     mov eax, (ClientInfo ptr [esi]).client_socket <------ ???????? Как эту строку переписать на фасме ???
    Спасибо.
     
  2. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    может так , так проходит, может как-то красивее можно?
    Код (Text):
    1. locals
    2.     cinf            ClientInfo 
    3. endl
    4.     lea esi, [dataz]
    5.     mov [cinf],esi
    6.     mov eax, [cinf.client_socket]
     
  3. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    да выше мальсть не ту структуру описал :)
    Код (Text):
    1.     ClientInfo struct
    2.         client_socket   dd ?
    3.         client_ip       in_addr <>
    4.     ClientInfo ends
     
  4. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    _sheva740
    Код (Text):
    1. mov eax,[esi+ClientInfo.client_socket]
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    _sheva740
    А этот код твой вообще работает? о_0
     
  6. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Great
    :)
    на masm-e работает ))
     
  7. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    l_inc
    Спасибо!
     
  8. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Не ругайте в асме не силен, но учусь)
    а можно еще вопрос?
    вот в masm - е
    Код (Text):
    1. WaitForClientConnections proc sersock :DWORD
    2. local client_address    : sockaddr_in
    3. local lpThreadId        : DWORD
    4. ...
    5.         mov lpThreadId, sizeof sockaddr_in ;                ????
    6.         invoke  accept,sersock, addr client_address,addr lpThreadId
    А fasm - е это же работает так ...

    Код (Text):
    1. proc WaitForClientConnections ,sersock
    2. locals
    3.     client_address  sockaddr_in
    4.     lpThreadId  dw 0
    5. endl
    6.     mov [lpThreadId], 10h   ;sizeof sockaddr_in ; ????
    7.     lea esi, [lpThreadId]
    8.     lea edi, [client_address]
    9.     invoke  accept,[sersock], edi,esi
    Вот так конечно работает, но как-то у меня криво оно выглядит с этими регистрами. Можно как-то иначе переписать вызов accept() на fasm -e ???
     
  9. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    _sheva740
    Код (Text):
    1. mov [lpThreadId], sizeof.sockaddr_in
    2. invoke  accept,[sersock], addr client_address,addr lpThreadId
    Для использования addr нужно подключить win32ax.inc вместо win32a.inc. Но в любом случае это будет заменено на те же lea, но через регистр edx. Поэтому смысла в этом немного.
     
  10. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    l_inc
    Большое спасибо за помощь - оставляем с регистрами значит.