masm vs fasm

Тема в разделе "WASM.HEAP", создана пользователем dead_body, 10 дек 2005.

  1. Asterix

    Asterix New Member

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





    это как?



    я могу спокойно объвить метку
    Код (Text):
    1. public _start
    2.  
    3. _start:
    4.  




    и слинковать потом все obj

    %masm32%\bin\link /nologo /opt:nowin98 /SUBSYSTEM:WINDOWS /ENTRY:start /release /LIBPATH:%masm32%\lib %PROJECTNAME%.obj KERNEL32.LIB USER32.LIB
     
  2. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    _BC_

    Лови пример линковки .obj сгенереного фасмом в экзешник.

    [​IMG] 1251535275__2.rar
     
  3. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    "Кто-нибудь писал целиком на фасме программу, разделенную на модули? Что-то я сильно сомневаюсь..."



    А в чём там проблемы? include разве не работает?
     
  4. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    Я знаю про ключ /ENTRY для линкера, я про отсутствие поддержки директивы entry для format coff. На тасме я соберу программу из модулей без всяких public-символов и ключей линкеру.

    Опять выходит, что без стороннего линкера фасму никак.
     
  5. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"


    Это масму, тасму и прочим без линкера никак, а немалое достоинство фасма в том, что ему линкер вобще ненужен.

    А если и понадобиться, то кто мне запрещает использовать сторонний линкер?

    _BC_ начиная с удтверждения о невозможности написания модульных программ на фасме мы плавно переходим к отсутствию в комплекте с ним линкера :) Очевидно скоро кроме <> не останется ни одного доказательства каких либо недостатков фасма, да и то это доказательство спорное.
     
  6. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759




    Пока я не смогу в SoftICE'е отлаживать программу на фасме на уровне исходного кода, как делаю это на tasm/tlink, я найду и другие недостатки. ;) Отсутствие отлад. информации само по себе серьёзный недостаток... А тот факт, что фасм сам по себе не может создавать entrypoint-модули, кое-что говорит.

    P.S. А UniLink поддерживает /ENTRY ?
     
  7. n0p

    n0p 10010000b

    Публикаций:
    0
    Регистрация:
    7 май 2003
    Сообщения:
    256
    Адрес:
    Новосиbeerск
    _BC_

    Что-то я совсем не догнал, зачем какие-то отладочные символы и прочая чушь? Когда я пишу код на фасме, он ничем не отличается от дизассемблерного листинга. Разве что вызовы процедур не имеют символьных меток, но всегда ведь можно переключиться на сорец и посмотреть. Оля отмечает переходы в ветвлениях стрелочками, в сорцах у меня стоят такие же, потому что если переход не очень длинный, я всегда ставлю jcc $+xx, где xx высчитывается в уме мгновенно.

    Конечно, если юзать макросы всякие, то сложности непременно возникнут, но я этой болезнью не поражен, макросов у меня ровно 4 штуки, без которых совсем никак.
     
  8. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    _BC_

    Это уже от бессилия, да?

    Без ключей, без линкера.. А ты одним ml.exe много программ соберёшь? Или одним tasm.exe, без tlink?





    Ни о чём это не говорит. А если уж на то пошло — на форуме фасма приводилишь модификации для создания "комментариев" в COFF (с помощью которых можно подключать lib (типа как в масме includelib)). Думаю, не так сложно добавить и аналог масмовский END <label>. Всё в ваших руках, господа. А вы попробуйте добавить какую-нибудь фичу/исправить баг в masm/tasm. Получилось?



    Да и как уже было сказано выше, отладочную информацию тоже можно сделать.
     
  9. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    IceStudent





    Ну почему же, я специально не касаюсь синтаксиса фасма... это всё только наружные недостатки.







    В случае масма/тасма транслятор+линкер рассматриваются как одно целое. А про фасм любят поорать что он самодостаточен, что ему ничего не надо, т.к. всё что надо у него уже есть и тд. Ересь полная, такая же как и псевдо-"переносимость" фасма.



    Итак, подведем итоги по компоновке:

    1. Свой линкер в комплект фасма не входит.

    2. фасм не может создавать/использовать объектные модули для MZ/RAW вообще.

    3. Директива entry для модулей не поддерживается, только в обход делается, через линкер.

    4. При использовании coff-модулей, низкоуровневые фичи вроде управления секциями сводятся на нет.







    Лично пропатчил tlink32.exe на маленький стаб и убрал баг с мин. выравниванием первой секции. Всё остальное устраивает.







    Главное, что в самом фасме на данный момент нет поддержки отладки, и нету ее уже не первый год.



    n0p





    Мое тебе почтение, если ты пишешь без макросов и твой код в исходниках похож на дизассемблированный. Если ты к тому же можешь быстро найти нужный фрагмент кода в своей программе из 3К+ строк, сказать, какая переменная находится по адресу [004A1254], что числу 1437 соответствует equ MY_ERR_CODE_FOR_SOMETHING, сходу определить, какое имя соответствует полю структуры +3ACh, затем... если ты отлаживаешь драйвера олей... и всё это ты регулярно проделываешь для СВОИХ больших программ на фасме -- двойной респект. ;)
     
  10. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    _BC_

    А вот тебе пример сборки программы линкером ml.exe без использования /ENTRY

    [​IMG] _920003889__2.rar
     
  11. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    Это всё обход проблемы, public ... as '_WinCRTStartup' не лучше чем /ENTRY. Куда бы лучше смотрелось просто "entry", или "end start". Ан нет, только в обход.
     
  12. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"




    macro entry x

    {

    public x as '_WinCRTStartup'

    }
     
  13. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    О, но ведь макросы -- это дурной тон, и их "не используют". ;)

    Эт всё изврат, как, к примеру, макрос с virtual взамен директивы assume... А _WinMainCRTStartup unilink или другая альтернатива link.exe схавает? А то мне кажется, что таки 'm$ only' всё это будет.
     
  14. n0p

    n0p 10010000b

    Публикаций:
    0
    Регистрация:
    7 май 2003
    Сообщения:
    256
    Адрес:
    Новосиbeerск
    _BC_

    В своем коде ориентируюсь легко, коментарии к каждой строчке имеются. В процессе отладки функции у меня весь код этой функции в голове, непосредственно отладчик нужен только для наглядности происходящего. Да, отсутствие символьных меток и замена их на адреса - это некоторое неудобство, так же как и с константами. Но опять же повторяю, всегда можно переключиться на сорец и посмотреть что ээто за циферки и откуда они взялись. Со структурами проблем не возникает, потому что структурами (макросом) не пользуюсь. Описание структуры дано в коментариях в удобном месте с указанием логического названия полей, а в коде это будет что-то типа следующего:
    Код (Text):
    1. mov dword [esi+0Ch],eax ; list->pNext = eax
    просто и понятно.



    А драйвера я не пишу, это да. Все как-то руки не доходят и мотивации достаточной нет.
     
  15. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia


    ну не нравится - не используй. Каждому свое. Как было где-то сказано - спорить о том что лучше а что хуже - удел детей. Надо просто хотя-бы минимально владеть самыми распространенными инструментами ибо может так оказатся что на машине будет только фасм а что-то скомпилить надо.
     
  16. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759




    А я и не использую. Я просто стараюсь донести мысль о том, что фасм пригоден только для всяких незатейливых программок, но никак не для серьёзных проектов. И похоже, что такую участь ему определили сами создатели фасма.
     
  17. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine


    Аргументы убедительны, особенно
    .





    Это просто твоё мнение.



    Убедительный аргументов того,
    , кроме отсутствия в стандартной сборке отладочной информации никто не услышал.
     
  18. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    IceStudent



    Ты то сам привел убедительные аргументы в пользу своего заявления, что фасм продолжает рулить? Что-то я не заметил убедительных аргументов.
     
  19. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    cresta

    фасм рулит, потому-что он не не рулит.

    у него всего парочку масеньких минусов, да и то думаю временно. конечно, может по сравнению с С, фасм и не блещет, но по сравнению с ассемблерами, которые были до него, он сверкает, прям як звезда на небе.



    вооще-то тема уже приползла в тупик, не одна из сторон не соглашаеться с доводами другой. ну толь зачем спорить? всё равно, кому на чём писать дело каждого, а раз луч просветления не доходит до макушек, то и не надо. видно укоренился в них Диавол, и не отпустит до смертного одра...

    покойтесь с миром,но скажу честно, фасм как наркотик, попробовав и узнав его Мощь, уже невозможно отказаться.
     
  20. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257




    Очень убедительно. Весьма веский довод :))) Рулит, если им пользуются большинство. Вот тогда можешь утверждать, что он рулит. Пройдись по форумам, посмотри, чем пользуются люди. Можешь и тут походить, посмотреть.







    Пробовал, мерзость ещё та. Как и наркотики.





    Дык IceStudent загнал её в тупик, вспомнив про фасм :)) И потихоньку даже название темы мутировало. Интересно, с чьей подачи?

    :)))