Здраствуйте, извеняюсь за новую тему, но не нашел никакой информации по поводу 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 и так ли важен юникод.
jershell Для поддержки юникода в nasm использую следующий макрос Код (Text): %macro UTEXT 1 %assign %%a 0 %assign %%b 0 %strlen %%b %1 %assign %%c 1 %assign %%d 0 %rep %%b %substr %%a %1 %%c %if %%d=0 %ifidn %%a, '/' %assign %%d 1 %elif %%a > 127 DB %%a-0B0h,4 %else DW %%a %endif %else %assign %%d 0 %ifidn %%a, '/' DW '/' %elifidn %%a, 'n' DW 0Dh, 0Ah %elifidn %%a, 'r' DW 0Dh %elifidn %%a, 'l' DW 0Ah %elifidn %%a, 's' DW 20h %elifidn %%a, 'c' DW 3Bh %elifidn %%a, 't' DW 09h %elifidn %%a, '0' DW 0 %elifidn %%a, '1' DW 1 %else DW '/', %%a %endif %endif %assign %%c %%c+1 %endrep DW 0 %endmacro ... UTEXT "Hello, world!"
Я про тот топик уже и забыл, но наверное лучший вариант с использованием api MultiByteToWideChar хотя и UTEXT "©Вася!, 2009" можно через dw 0A9h /UTEXT "Вася!, 2009"
fasm в отличие от nasm является многопроходным ассемблером... (хотя возможно, это и устаревшая информация, т.к. nasm сейчас тоже активно развивается новой группой разработчиков). ...на днях столкнулся с фишкой, что equ в nasm используется для объявления констант - не понравилось, т.к. привык, что в fasm это слово используется для объявления "подстановок".