Создать библиотеку на ASM

Тема в разделе "WASM.BEGINNERS", создана пользователем Articgames, 20 дек 2005.

  1. Articgames

    Articgames New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2005
    Сообщения:
    2
    Вот хотелось бы создать небольшую статическую библиотеку на ASM и потом использовать ее в C++. Какой ассемблер лучше подходит для этого. Может где статейка есть.
     
  2. Topor

    Topor New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2005
    Сообщения:
    31
    А чем MASM плох ? :)
     
  3. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    практически любой: masm, nasm, fasm точно подходят
     
  4. Electrik

    Electrik New Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    12
    Адрес:
    Russia
    такой вопросик можно ли испоьзовать в фасме либы от масма

    можно только если линковать отдельно а по дрогому можно как нить

    и ещё можно ли выдернуть код из либы
     
  5. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    Прошу сильно не пинать, но чем библиотека на masm отличается от библиотеке написаной на чём нибудь другом. Это ведь вроде PE формат, который MS создал.
     
  6. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    asd



    есть как минимум OMF и COFF форматы
     
  7. Articgames

    Articgames New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2005
    Сообщения:
    2
    Почитав документацию по FASM и посмотрев примеры обнаружил, что там, на сколько я понял, можно создавать только DLL, что в моем случае не подходит
     
  8. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Возьми masm и не забивай себе голову поисками неизвестно чего. masm - стандарт де-факто, он позволяет сделать любую либу и любую dll.
     
  9. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Articgames

    Интересно как ты смотрел...



    вот пример, тут сразу тебе и .obj и .lib,

    оформить как bat файл поправить пути и запустить

    для компиляции

    Смотри также пример создания coff в fasm'е
    Код (Text):
    1. ;@echo off
    2. ;goto make
    3. ; ###################################################################### ###
    4. format MS COFF
    5.  
    6. section '.text' code readable executable
    7.  
    8. ; ###################################################################### ###
    9. public htodw as '_htodw@4'
    10. htodw:
    11.  
    12.   ; -----------------------------------
    13.   ; Convert hex string into dword value
    14.   ; Return value in eax
    15.   ; -----------------------------------
    16.  
    17.     push ebx
    18.     push esi
    19.     push edi
    20.  
    21.     mov edi, [esp+4*4]
    22.     mov esi, [esp+4*4]
    23.  
    24.      ALIGN 4
    25.  
    26.   again:  
    27.     mov al,[edi]
    28.     inc edi
    29.     or  al,al
    30.     jnz again
    31.     sub esi,edi
    32.     xor ebx,ebx
    33.     add edi,esi
    34.     xor edx,edx
    35.     not esi             ;esi = lenth
    36.  
    37. ;  .while esi != 0
    38. @@:
    39. test esi,esi
    40. jz @F
    41.     mov al, [edi]
    42.     cmp al,'A'
    43.     jb figure
    44.     sub al,'a'-10
    45.     adc dl,0
    46.     shl dl,5            ;if cf set we get it bl 20h else - 0
    47.     add al,dl
    48.     jmp next
    49.   figure:
    50.     sub al,'0'
    51.   next:  
    52.     lea ecx,[esi-1]
    53.     and eax, 0Fh
    54.     shl ecx,2           ;mul ecx by log 16(2)
    55.     shl eax,cl          ;eax * 2^ecx
    56.     add ebx, eax
    57.     inc edi
    58.     dec esi
    59. ;  .endw
    60. jmp @B
    61.  
    62. @@:
    63.  
    64.     mov eax,ebx
    65.  
    66.     pop edi
    67.     pop esi
    68.     pop ebx
    69.  
    70.     retn 4
    71.  
    72. ;:make
    73. ;SET PROJECTNAME=test_obj_fasm
    74. ;if exist %PROJECTNAME%.obj del %PROJECTNAME%.obj
    75. ;C:\FasmC\fasm.exe %PROJECTNAME%.bat %PROJECTNAME%.obj
    76. ;\masm32\bin\link -lib "%PROJECTNAME%.obj" "/out:%PROJECTNAME%.lib"
    77. ;echo.
    78. ;pause
    79. ;cls
    80.