Путаница с nasm, помогите пересесть или одуматься.

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

  1. jershell

    jershell New Member

    Публикаций:
    0
    Регистрация:
    11 фев 2009
    Сообщения:
    18
    Здраствуйте, извеняюсь за новую тему, но не нашел никакой информации по поводу Nasm. Чтоб избежать путаницы и вопросов, поясню мою проблему. Я все время сидел под виндовс 32. И не быстро - не медленно писать программы на masm. Что вполне устраивало. Но тут стала небольшая трабла с кроссплатформеностью. И вот думаю на чем же мне теперь писать, к чему привыкать и набивать руку. Начал сердно гуглить, гуглю уже втрой час. Информация противоречива и расходится. Вопрос: Что лучше fasm или nasm. Критерии: x86-64 (amd64), win/nix. Так же немного не вшибаю, понадобится ли мне поддержка юникода, это вообще круто или нет? И непонятно, напеисанно что Fasm держит MZ, PE, COFF or ELF format, а nasm: bin, aout, aoutb, coff, elf, as86, obj, win32, rdf, ieee, но нету поддержки юникода и х64(на википедии написанно что поддерживает, но в обзоре на данную тему нет). Сам думаю что склонен к nasm, т.к считаю, что раз код более менеепохож на масмский, то проще будет начать использовать, но тут же непонятно, держит ли он x64 и так ли важен юникод.
     
  2. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    jershell
    fasm
     
  3. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    jershell
    Для поддержки юникода в nasm использую следующий макрос
    Код (Text):
    1. %macro UTEXT 1
    2.  %assign  %%a 0
    3.  %assign  %%b 0
    4.  %strlen  %%b %1
    5.  %assign  %%c 1
    6.  %assign  %%d 0
    7.  %rep     %%b
    8.   %substr  %%a %1 %%c
    9.   %if %%d=0
    10.     %ifidn %%a, '/'
    11.         %assign %%d 1
    12.     %elif %%a > 127
    13.       DB %%a-0B0h,4
    14.     %else
    15.       DW %%a
    16.     %endif
    17.   %else
    18.     %assign %%d 0
    19.     %ifidn %%a, '/'
    20.       DW '/'
    21.     %elifidn %%a, 'n'
    22.       DW 0Dh, 0Ah
    23.     %elifidn %%a, 'r'
    24.       DW 0Dh
    25.     %elifidn %%a, 'l'
    26.       DW 0Ah
    27.     %elifidn %%a, 's'
    28.       DW 20h
    29.     %elifidn %%a, 'c'
    30.       DW 3Bh
    31.     %elifidn %%a, 't'
    32.       DW 09h
    33.     %elifidn %%a, '0'
    34.       DW 0
    35.     %elifidn %%a, '1'
    36.       DW 1
    37.     %else
    38.       DW '/', %%a
    39.     %endif
    40.   %endif
    41.   %assign %%c %%c+1
    42.  %endrep
    43.  DW 0
    44. %endmacro
    45. ...
    46. UTEXT "Hello, world!"
     
  4. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    а по мне так насм похож на фасм, тем более что фасм от него и пошел, если мне память не изменяет
     
  5. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    Код (Text):
    1. UTEXT "Вася!"
    - это сработает? ;)
     
  6. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    А то!? Сорц и ехе в аттаче :)
     
  7. G13

    G13 New Member

    Публикаций:
    0
    Регистрация:
    24 мар 2006
    Сообщения:
    499
    Да. А вот UTEXT "©Вася!, 2009" уже нет :)

     
    Mikl___
    А на топик чего не сослались?
     
  8. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Я про тот топик уже и забыл, но наверное лучший вариант с использованием api MultiByteToWideChar хотя и UTEXT "©Вася!, 2009" можно через dw 0A9h /UTEXT "Вася!, 2009"
     
  9. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    зауважал :)
     
  10. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    fasm в отличие от nasm является многопроходным ассемблером... (хотя возможно, это и устаревшая информация, т.к. nasm сейчас тоже активно развивается новой группой разработчиков).

    ...на днях столкнулся с фишкой, что equ в nasm используется для объявления констант - не понравилось, т.к. привык, что в fasm это слово используется для объявления "подстановок".