include fasm (Linux)

Discussion in 'WASM.BEGINNERS' started by Okoro4ek999, Mar 4, 2020.

  1. Okoro4ek999

    Okoro4ek999 New Member

    Blog Posts:
    0
    Joined:
    Mar 4, 2020
    Messages:
    3
    Не понимаю прикола с инклюдом интерфейса под юникс.
    Code (ASM):
    1. include 'include/libc/system.inc'
    а он в ответку

    Code (Text):
    1. flat assembler  version 1.73.13  (16264 kilobytes memory, x64)
    2. include/libc/system.inc [6]:
    3. extrn malloc
    4. processed: extrn malloc
    5. error: illegal instruction.
    6.  
    код system.inc на которого агрессия
    Code (Text):
    1. ; flat assembler interface for Unix/libc
    2. ; Copyright (c) 1999-2020, Tomasz Grysztar.
    3. ; All rights reserved.
    4.  
    5. extrn malloc
    6. extrn free
    7. extrn getenv
    8. extrn fopen
    9. extrn fclose
    10. extrn fread
    11. extrn fwrite
    12. extrn fseek
    13. extrn ftell
    14. extrn time
    15. extrn exit
    нужна функция fwrite и time для работы.
     
  2. f13nd

    f13nd Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 22, 2009
    Messages:
    2,020
    Для чего оно тебе? Это инклуд от fasm\source\libc\fasm.asm, system.inc захочет source\variable.inc, а за ним все остальные инклуды бинарника фасма.
     
  3. UbIvItS

    UbIvItS Well-Known Member

    Blog Posts:
    0
    Joined:
    Jan 5, 2007
    Messages:
    6,242
    Okoro4ek999, а зачем фасм, вообще, нужен под линь???
     
    Indy_ likes this.
  4. f13nd

    f13nd Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 22, 2009
    Messages:
    2,020
    Зачем может понадобиться линукс?
     
  5. TermoSINteZ

    TermoSINteZ Синоби даоса Staff Member

    Blog Posts:
    2
    Joined:
    Jun 11, 2004
    Messages:
    3,568
    Location:
    Russia
    Okoro4ek999, не надо этого делать
    это ж исходный код FASM компилятора. Это не предназначено для использования в качестве инклудов AS IS

    Ну и чтоб собирать LIBC нужно формат добавить правильный

    Code (ASM):
    1. format  ELF
    2. public  main
    3.  
    4. section '.text' executable align 16
    5.  
    6. main:
    7.  
    8.         mov     [con_handle],1
    9.         mov     esi,_msg
    10.         call    display_string
    11. exit_program:
    12.         movzx   ebx,al
    13.         mov     eax,1
    14.         int     0x80
    15.  
    16. display_string:
    17.         push    ebx
    18.         mov     edi,esi
    19.         mov     edx,esi
    20.         or      ecx,-1
    21.         xor     al,al
    22.         repne   scasb
    23.         neg     ecx
    24.         sub     ecx,2
    25.         mov     eax,4
    26.         mov     ebx,[con_handle]
    27.         xchg    ecx,edx
    28.         int     0x80
    29.         pop     ebx
    30.         ret
    31.  
    32. extrn malloc
    33. extrn free
    34. extrn getenv
    35. extrn fopen
    36. extrn fclose
    37. extrn fread
    38. extrn fwrite
    39. extrn fseek
    40. extrn ftell
    41. extrn time
    42. extrn exit
    43.  
    44. _msg db 'start program',0
    45. con_handle dd ?
    46.  
     
    Last edited: Mar 4, 2020
  6. Okoro4ek999

    Okoro4ek999 New Member

    Blog Posts:
    0
    Joined:
    Mar 4, 2020
    Messages:
    3
    Я использую format ELF64 executable 3 для своей системы, нормально?
     
  7. TermoSINteZ

    TermoSINteZ Синоби даоса Staff Member

    Blog Posts:
    2
    Joined:
    Jun 11, 2004
    Messages:
    3,568
    Location:
    Russia
    Code (ASM):
    1.  
    2. format ELF64 executable 3
    3. entry start
    4.  
    5. include 'import64.inc'
    6.  
    7. interpreter '/lib64/ld-linux-x86-64.so.2'
    8. needed 'libc.so.6'
    9. import printf,exit
    10.  
    11. segment readable executable
    12.  
    13. start:
    14.  
    15.     lea    rdi,[msg]
    16.     xor    eax,eax
    17.     call    [printf]
    18.  
    19.     call    [exit]
    20.  
    21. segment readable writeable
    22.  
    23. msg db 'Hello world!',0xA,0
    24.  
    скачайте FASM Для линукса и там все примеры будут
    https://flatassembler.net/fasm-1.73.22.tgz
     
  8. Okoro4ek999

    Okoro4ek999 New Member

    Blog Posts:
    0
    Joined:
    Mar 4, 2020
    Messages:
    3
    Да я это уже понял недавно.
    btw, I use Arch поэтому сначала стащил fasm с pacman а там не было examples