_BC_ это как? я могу спокойно объвить метку Код (Text): public _start _start: и слинковать потом все obj %masm32%\bin\link /nologo /opt:nowin98 /SUBSYSTEM:WINDOWS /ENTRY:start /release /LIBPATH:%masm32%\lib %PROJECTNAME%.obj KERNEL32.LIB USER32.LIB
"Кто-нибудь писал целиком на фасме программу, разделенную на модули? Что-то я сильно сомневаюсь..." А в чём там проблемы? include разве не работает?
Я знаю про ключ /ENTRY для линкера, я про отсутствие поддержки директивы entry для format coff. На тасме я соберу программу из модулей без всяких public-символов и ключей линкеру. Опять выходит, что без стороннего линкера фасму никак.
Это масму, тасму и прочим без линкера никак, а немалое достоинство фасма в том, что ему линкер вобще ненужен. А если и понадобиться, то кто мне запрещает использовать сторонний линкер? _BC_ начиная с удтверждения о невозможности написания модульных программ на фасме мы плавно переходим к отсутствию в комплекте с ним линкера Очевидно скоро кроме <> не останется ни одного доказательства каких либо недостатков фасма, да и то это доказательство спорное.
Пока я не смогу в SoftICE'е отлаживать программу на фасме на уровне исходного кода, как делаю это на tasm/tlink, я найду и другие недостатки. Отсутствие отлад. информации само по себе серьёзный недостаток... А тот факт, что фасм сам по себе не может создавать entrypoint-модули, кое-что говорит. P.S. А UniLink поддерживает /ENTRY ?
_BC_ Что-то я совсем не догнал, зачем какие-то отладочные символы и прочая чушь? Когда я пишу код на фасме, он ничем не отличается от дизассемблерного листинга. Разве что вызовы процедур не имеют символьных меток, но всегда ведь можно переключиться на сорец и посмотреть. Оля отмечает переходы в ветвлениях стрелочками, в сорцах у меня стоят такие же, потому что если переход не очень длинный, я всегда ставлю jcc $+xx, где xx высчитывается в уме мгновенно. Конечно, если юзать макросы всякие, то сложности непременно возникнут, но я этой болезнью не поражен, макросов у меня ровно 4 штуки, без которых совсем никак.
_BC_ Это уже от бессилия, да? Без ключей, без линкера.. А ты одним ml.exe много программ соберёшь? Или одним tasm.exe, без tlink? Ни о чём это не говорит. А если уж на то пошло — на форуме фасма приводилишь модификации для создания "комментариев" в COFF (с помощью которых можно подключать lib (типа как в масме includelib)). Думаю, не так сложно добавить и аналог масмовский END <label>. Всё в ваших руках, господа. А вы попробуйте добавить какую-нибудь фичу/исправить баг в masm/tasm. Получилось? Да и как уже было сказано выше, отладочную информацию тоже можно сделать.
IceStudent Ну почему же, я специально не касаюсь синтаксиса фасма... это всё только наружные недостатки. В случае масма/тасма транслятор+линкер рассматриваются как одно целое. А про фасм любят поорать что он самодостаточен, что ему ничего не надо, т.к. всё что надо у него уже есть и тд. Ересь полная, такая же как и псевдо-"переносимость" фасма. Итак, подведем итоги по компоновке: 1. Свой линкер в комплект фасма не входит. 2. фасм не может создавать/использовать объектные модули для MZ/RAW вообще. 3. Директива entry для модулей не поддерживается, только в обход делается, через линкер. 4. При использовании coff-модулей, низкоуровневые фичи вроде управления секциями сводятся на нет. Лично пропатчил tlink32.exe на маленький стаб и убрал баг с мин. выравниванием первой секции. Всё остальное устраивает. Главное, что в самом фасме на данный момент нет поддержки отладки, и нету ее уже не первый год. n0p Мое тебе почтение, если ты пишешь без макросов и твой код в исходниках похож на дизассемблированный. Если ты к тому же можешь быстро найти нужный фрагмент кода в своей программе из 3К+ строк, сказать, какая переменная находится по адресу [004A1254], что числу 1437 соответствует equ MY_ERR_CODE_FOR_SOMETHING, сходу определить, какое имя соответствует полю структуры +3ACh, затем... если ты отлаживаешь драйвера олей... и всё это ты регулярно проделываешь для СВОИХ больших программ на фасме -- двойной респект.
Это всё обход проблемы, public ... as '_WinCRTStartup' не лучше чем /ENTRY. Куда бы лучше смотрелось просто "entry", или "end start". Ан нет, только в обход.
О, но ведь макросы -- это дурной тон, и их "не используют". Эт всё изврат, как, к примеру, макрос с virtual взамен директивы assume... А _WinMainCRTStartup unilink или другая альтернатива link.exe схавает? А то мне кажется, что таки 'm$ only' всё это будет.
_BC_ В своем коде ориентируюсь легко, коментарии к каждой строчке имеются. В процессе отладки функции у меня весь код этой функции в голове, непосредственно отладчик нужен только для наглядности происходящего. Да, отсутствие символьных меток и замена их на адреса - это некоторое неудобство, так же как и с константами. Но опять же повторяю, всегда можно переключиться на сорец и посмотреть что ээто за циферки и откуда они взялись. Со структурами проблем не возникает, потому что структурами (макросом) не пользуюсь. Описание структуры дано в коментариях в удобном месте с указанием логического названия полей, а в коде это будет что-то типа следующего: Код (Text): mov dword [esi+0Ch],eax ; list->pNext = eax просто и понятно. А драйвера я не пишу, это да. Все как-то руки не доходят и мотивации достаточной нет.
ну не нравится - не используй. Каждому свое. Как было где-то сказано - спорить о том что лучше а что хуже - удел детей. Надо просто хотя-бы минимально владеть самыми распространенными инструментами ибо может так оказатся что на машине будет только фасм а что-то скомпилить надо.
А я и не использую. Я просто стараюсь донести мысль о том, что фасм пригоден только для всяких незатейливых программок, но никак не для серьёзных проектов. И похоже, что такую участь ему определили сами создатели фасма.
Аргументы убедительны, особенно . Это просто твоё мнение. Убедительный аргументов того, , кроме отсутствия в стандартной сборке отладочной информации никто не услышал.
IceStudent Ты то сам привел убедительные аргументы в пользу своего заявления, что фасм продолжает рулить? Что-то я не заметил убедительных аргументов.
cresta фасм рулит, потому-что он не не рулит. у него всего парочку масеньких минусов, да и то думаю временно. конечно, может по сравнению с С, фасм и не блещет, но по сравнению с ассемблерами, которые были до него, он сверкает, прям як звезда на небе. вооще-то тема уже приползла в тупик, не одна из сторон не соглашаеться с доводами другой. ну толь зачем спорить? всё равно, кому на чём писать дело каждого, а раз луч просветления не доходит до макушек, то и не надо. видно укоренился в них Диавол, и не отпустит до смертного одра... покойтесь с миром,но скажу честно, фасм как наркотик, попробовав и узнав его Мощь, уже невозможно отказаться.
Очень убедительно. Весьма веский довод )) Рулит, если им пользуются большинство. Вот тогда можешь утверждать, что он рулит. Пройдись по форумам, посмотри, чем пользуются люди. Можешь и тут походить, посмотреть. Пробовал, мерзость ещё та. Как и наркотики. Дык IceStudent загнал её в тупик, вспомнив про фасм ) И потихоньку даже название темы мутировало. Интересно, с чьей подачи? ))