Базонезависимая структура wsadata

Discussion in 'WASM.BEGINNERS' started by JohnGalt, Dec 22, 2010.

  1. JohnGalt

    JohnGalt New Member

    Blog Posts:
    0
    Люди, подскажите пожалуйста как сделать структуру wsadata базонезависимой ?

    Да, и еще правильно ли объявил и заполнил структуру sockaddr_in

    call sock
    dw 0 ;family
    dw 0 ;port
    dd 0 ;adr
    db 8 dup(0)
    sock: pop ecx
    ;ЗАПОЛНЕНИЕ
    mov ecx,AF_INET
    invoke htons,6969
    add ecx,2
    mov ecx,eax ; порт в сетевом порядке байт
    invoke inet_addr, addr AdresIP
    add ecx,4
    mov ecx,eax ; помещаем в структуру айпи в нужном порядке байт

    Буду очень признателен за разъяснения .
     
  2. baldr

    baldr New Member

    Blog Posts:
    0
    JohnGalt,

    Стóит изучить:
    * разницу между указателем и тем, на что оный указывает (ecx и [ecx], к примеру);
    * как правильно преобразовать low-endian (a.k.a. host формат данных для ix86) константы в big-endian (a.k.a. network формат);
    * отчего нет необходимости объявлять пустую константу и тут же её затирать нужным значением;
    * почему не всегда стоит совать 32 бита туда, где обычно 16 бит живут.

    Базонезависимость была достигнута с помощью call/pop, остались детали (типа выравнивания ;).