LLD BSD EXE

Тема в разделе "NASM", создана пользователем Orbit, 12 ноя 2017.

  1. Orbit

    Orbit Member

    Публикаций:
    0
    Регистрация:
    13 дек 2016
    Сообщения:
    109
    Адрес:
    г. Москва
    Как слинковать ехе фаил?
     
  2. Orbit

    Orbit Member

    Публикаций:
    0
    Регистрация:
    13 дек 2016
    Сообщения:
    109
    Адрес:
    г. Москва
    Код на nasm, с ошибками и не линкуется:
    Код (ASM):
    1.  
    2. extern WSAStartup
    3. extern WSACleanup
    4. extern socket
    5. extern Sleep
    6. extern ExitProcess
    7. extern accept
    8. extern listen
    9. extern bind
    10.  
    11.  
    12. SECTION .bss
    13.  
    14.   hSocket:  resq 1
    15.  
    16.  
    17. SECTION .data
    18.  
    19. port: equ 777
    20.  
    21. struc WSADATA
    22.   .wVersion:  resw 1
    23.   .wHighVersion:  resw 1
    24.   .szDescription:  resb 256
    25.   .szSystemStatus:  resb 256
    26.   .iMaxSockets:  resd 1
    27.   .iMaxUdpDg:  resd 1
    28.   .lpVendorInfo:  resq 1
    29. endstruc
    30.  
    31. struc sockaddr_in
    32.   .sin_family:  resd 1
    33.   .sin_port:  resd 1
    34.   .sin_addr:  resb in_addr
    35.   .sin_zero:  resb 8
    36.   .size:
    37. endstruc
    38.  
    39. struc in_addr
    40.   .s_addr:  resq 1
    41. endstruc
    42.  
    43. SECTION .code
    44.  
    45. global main
    46.  
    47. main:
    48.  
    49.   mov rdx , [WSADATA]
    50.   mov rcx , 0x202
    51.   call WSAStartup
    52.  
    53.   mov r8 , 0
    54.   mov rdx , 1
    55.   mov rcx , 2
    56.   call socket
    57.  
    58.   mov [hSocket] , rax
    59.  
    60.   mov dword [sockaddr_in.sin_family] , 1
    61.   mov qword [sockaddr_in.sin_addr] , 0
    62.   mov ax , port
    63.   xchg ah , al
    64.   mov [sockaddr_in.sin_port] , ax
    65.  
    66.   mov r8 , sockaddr_in.size
    67.   mov rdx , [sockaddr_in]
    68.   mov rcx , hSocket
    69.   call bind
    70.  
    71.   mov rdx , 13
    72.   mov rcx , hSocket
    73.   call listen
    74.  
    75.   mov r8 , 0
    76.   mov rdx , [sockaddr_in]
    77.   mov rcx , hSocket
    78.   call accept
    79.  
    80.   mov rcx , 60000
    81.   call Sleep
    82.  
    83.  
    84.   call WSACleanup
    85.  
    86.   mov rcx,0
    87.   call ExitProcess
    88.  
    компилирую
    [​IMG]
     
  3. Hacker

    Hacker New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    3
    Код (ASM):
    1.  
    2. extern WSAStartup
    3. extern WSACleanup
    4. extern socket
    5. extern Sleep
    6. extern ExitProcess
    7. extern accept
    8. extern listen
    9. extern bind
    10. SECTION .bss
    11.   hSocket:  resq 1
    12. SECTION .data
    13. port: equ 777
    14. struc WSADATA
    15.   .wVersion:  resw 1
    16.   .wHighVersion:  resw 1
    17.   .szDescription:  resb 256
    18.   .szSystemStatus:  resb 256
    19.   .iMaxSockets:  resd 1
    20.   .iMaxUdpDg:  resd 1
    21.   .lpVendorInfo:  resq 1
    22. endstruc
    23. struc sockaddr_in
    24.   .sin_family:  resd 1
    25.   .sin_port:  resd 1
    26.   .sin_addr:  resq 1
    27.   .sin_zero:  resb 8
    28.   .size:
    29. endstruc
    30. SECTION .text
    31. global MainProc
    32. MainProc:
    33.   mov rdx , [WSADATA]
    34.   mov rcx , 0x202
    35.   call WSAStartup
    36.   mov r8 , 0
    37.   mov rdx , 1
    38.   mov rcx , 2
    39.   call socket
    40.   mov [hSocket] , rax
    41.   mov dword [sockaddr_in.sin_family] , 1
    42.   mov qword [sockaddr_in.sin_addr] , 0
    43.   mov ax , port
    44.   xchg ah , al
    45.   mov [sockaddr_in.sin_port] , ax
    46.   mov r8 , sockaddr_in.size
    47.   mov rdx , [sockaddr_in]
    48.   mov rcx , hSocket
    49.   call bind
    50.   mov rdx , 13
    51.   mov rcx , hSocket
    52.   call listen
    53.   mov r8 , 0
    54.   mov rdx , [sockaddr_in]
    55.   mov rcx , hSocket
    56.   call accept
    57.   mov rcx , 60000
    58.   call Sleep
    59.   call WSACleanup
    60.   mov rcx,0
    61.   call ExitProcess
    62.  
    Компилирую в MinGW
    Alexey@Antares MINGW64 ~
    $ nasm.exe cmd.asm -f win64 -o cmd.obj

    Линкую
    Alexey@Antares MINGW64 ~
    $ lld-link.exe cmd.obj
    entry point must be defined

    Ошибки не вижу :(
     
  4. Hacker

    Hacker New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    3
    Я так понимаю entry point нужно указывать непосредственно линкеру?