|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Янв 2, 2004 15:52:33 Привет всем. Не хочется создавать флейм и/или затрагивать чьи-либо чувства.. Дело в том, что последнее время я стал очень часто задавать этот вопрос себе. И по-видимому, уже нашел на него ответ. Вот некоторые аргументы (постарался подойти объективно) masm: - кривой синтаксис (PTR и т.п.) - плохо документирован - использование - нелегально - накладывает "печать Баала" на код - не всегда очевиден код, который он сгенерирует. - я плохо разобрался с макросами + очень распространен + много инклудов и т.д. fasm: + "правильный" синтаксис + открытый исходный код + можно общаться с автором + развивается + на сколько я понял, продвинутый макроязык - распространенность относительно мала - AMD CodeAnalist с ним работать не будет :( Если кому-то есть что добавить.. Хотелось бы услышать мнение тех, кто работает с FASMом |
|
|
Дата: Янв 2, 2004 17:31:14 Полностью согласен кроме предпоследнего пункта: - распространенность относительно мала На мой взгляд это не является минусом, хотя и плюсом тоже не назовёш. |
|
|
Дата: Янв 2, 2004 17:51:04 Мне от транслятора ассемблера в большинстве случаев нужна лишь возможность перевести мнемоники в опкоды. FASM - это быстрое и удобное средство для этого. Так что я с вами :) Хотя вот с ""правильный" синтаксис" фанаты синтаксиса АТ&Т могут не согласиться... |
|
|
Дата: Янв 2, 2004 18:23:03 - использование - нелегально А можно поподробней? Первый раз слышу |
|
|
Дата: Янв 2, 2004 18:50:20 Я за fasm, однозначно. От себя могу добавить: + мне нравится возможность контролировать структуру исполняемого файла - имена и порядок следования секций и т.п. + Совместимость с ms link. + Есть рабочая версия для линуха. - стандартные макросы (import, invoke, etc) не особенно удобны - например, если возникает ошибка, то ее бывает довольно трудно отловить. Хотя тут есть альтернатива, даже две ;). Вроде ничего не забыл. |
|
|
Дата: Янв 2, 2004 19:31:29 pas А как у вас с RadASM? Я на этом застрял ;) captain cobalt В общем-то у intela официально нет стандартного синтаксиса. Но в fasme он разумней :) hGoblin А можно поподробней? Первый раз слышу Что такое masm? ML.exe который по мнению микрософта можно использовать только для написания драйверов. Hutch просто воспользовался ошибкой в старом лицензионном соглашении. Конечно, лицензионные соглашения, возможно и не вопрос. Но я силино сомневаюсь, что можно продать какую-нибудь программу написанную на масме за бугром. Кстати, линкер от микрософта добавляет "сигнатуры" к PE файлу. (печать Баала) Интересно, зачем? Hangatyr Ва имеете ввиду собственные макросы? А еще что? |
|
|
Дата: Янв 2, 2004 20:07:20 · Поправил: pas S_T_A_S_ Перешел на RadAsm. Члены структур после небольшого изврата появляются в выпадающем списке вовремя и вставляются без проблем (была проблема члены структуры вставлялись вместе со второй точкой). Можете написать мне письмо если есть проблемы постараюсь помочь. Hangatyr Если не нравятся стандартные макросы напиши свои в чём проблемма? |
|
|
Дата: Янв 2, 2004 21:02:30 pas Вот этот-то изврат меня и интересует. Я уже читал обращение к ketilo |
|
|
Дата: Янв 2, 2004 22:13:21 · Поправил: Quantum S_T_A_S_ Hutch просто воспользовался ошибкой в старом лицензионном соглашении. Конечно, лицензионные соглашения, возможно и не вопрос. Но я силино сомневаюсь, что можно продать какую-нибудь программу написанную на масме за бугром. Потерпите до 1го апреля! [отмодерировано] Зачем нас пугать заведомо ложной инфой? Это касается как лицензионного соглашения масм, так и продажи софта "за бугор". |
|
|
Дата: Янв 2, 2004 23:18:05 Quantum Постоянно это читаю в зарубежных источниках. Хотя это к сути вопроса дело не имеет :) И сигнатуры я убрал из линкера |
|
|
Дата: Янв 3, 2004 02:36:42 S_T_A_S_ И сигнатуры я убрал из линкера Вот это правильно! ;-) Постоянно это читаю в зарубежных источниках. Наверное, они пишут про новый масм, который с Вижульной Студией поставляется, или вообще пытаются связать ассемблер с реверсингом/крякингом. Лицензионных проблем со старым масм32 нет и быть не должно. Может ссылку подкинете? |
|
|
Дата: Янв 3, 2004 10:14:55 cbSize fix .cbSize fMask fix .fMask fType fix .fType fState fix .fState wID fix .wID hSubMenu fix .hSubMenu hbmpChecked fix .hbmpChecked hbmpUnchecked fix .hbmpUnchecked dwItemData fix .dwItemData dwTypeData fix .dwTypeData cch fix .cch struc MENUITEMINFO { cbSize dd 0 fMask dd 0 fType dd 0 fState dd 0 wID dd 0 hSubMenu dd 0 hbmpChecked dd 0 hbmpUnchecked dd 0 dwItemData dd 0 dwTypeData dd 0 cch dd 0 .size = $ - .cbSize };MENUITEMINFO ;ends capt fix .capt mii fix .mii Poz fix .Poz PopUpPoz fix .PopUpPoz uFlag fix .uFlag struc MenuRes { .s: mii MENUITEMINFO capt: times 100 db 0 Poz dd 0 PopUpPoz dd 0 uFlag dd 0 .size = $ - mii };MenuRes ;ends virtual at ebx mrs MenuRes end virtual После такого объявления всё работает нормально. Только переменную такого типа нужно объявлять гдето поблизости после объявления типа структуры. Структуру можно объявить и без virtual. |
|
|
Дата: Янв 3, 2004 11:15:33 Здравствуйте! A как на счёт NASM? (Хотя это совсем offtopic aka MASM versus FASM.) Я только недавно открыл для себя nasm и мне понравилось. ;) Но я не могу пока полностью "пересесть" на nasm (впрочем как и на fasm). Вот причины: 1) Не хватает литературы по некоторым важным для меня вопросам; 2) Если бы не masm я бы вообще не начал программировать под WindApi 32 :) Потому что где я бы добыл includes и libs? И к этому вопрос: а как дело обстоит в стандартной поставке fasm - есть ли столько экзамплов и libs и т.д.? 3) Мне кажется, что использовать invoke более продуктивно (субъективно, но думаю, что некоторые в тайне со мной согласяться ;) А может быть автор рассматривает ассемблер только как язык для создания низкоуровневых приложений, без привязки к платформе? (Тогда я не могу объективно оценить ситуацию). - накладывает "печать Баала" на код А как от этого избавиться? С уважением, 1990. |
|
|
Дата: Янв 3, 2004 11:49:30 Quantum Да не запоминаю я такие ссылки :( На board.win32asmcommunity я это все видел. Есть там разные флеймовые топики, особенно где hutch и betov спорили. И еще, существует книжка, автор Кип Ирвин (руссое название не помню, в оригинале: Irvine, Kip R: Assembly Language for Intel-Based Computers Prentice-Hall Publishing, 1998.) там по 16bit asm. Так вот, с ней идет masm 6.11 и masm 6.13, файлов-лицензий на диске нет, но на книжке было написано: "любезно предаставленный фирмой микрософт для использования ТОЛЬКО в образовательных целях" Поэтому я и сомневаюсь в легальности использования в других целях. Хотя, по-моему, этот вопрос волнует меня горазло меньше, чем вас ;-) pas Спасибо! Хорошее доказательство гибкости :) |
|
|
Дата: Янв 3, 2004 12:24:47 · Поправил: S_T_A_S_ 1990 А как от этого избавиться? Это мне посоветовал lingo12: How to avoid the "garbage" after dos stub and PE header produced by MS linker ver.7.10.2179 0045E564: E8C7A6FFFF call .000458C30 0045E569: 8B8D34020000 mov ecx,[ebp][00000234] 0045E56F: 03C8 add ecx,eax 0045E571: 8944242C mov [esp][2C],eax 0045E575: 898D38020000 mov [ebp][00000238],ecx 0045E57B: FF15BC124000 call _tzset ;MSVCR71.dll just substitute 03C8 (add ecx, eax) with two nops (9090) А это сделал я: i've pathced my "Microsoft (R) Incremental Linker Version 5.12.8078": :0044510C E86FABFFFF call 0043FC80 :00445111 8B8DE0010000 mov ecx, dword ptr [ebp+000001E0] :00445117 89442410 mov dword ptr [esp+10], eax :0044511B 90 nop ; 03 :0044511C 90 nop ; C8 :0044511D 898DE4010000 mov dword ptr [ebp+000001E4], ecx :00445123 FF1510114000 call _tzset Ну и свой stub можно тоже использовать. Это штатными средствами делается. По поводу NASM.. имхо, умер проект. Хотя синтаксис как в fasm. А на счет masm я с вами согласен. Начинать с него действительно проще, потомучто много всяких include. Но многих он уводит в сторону HLL.. Хотя жалею, что начал с него, мне дорого по началу обоходились команды mov eax, foo :) А invoke? дык она везде есть. Если свои макросы не охота писать :) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.095 |