Пользуется ли кто макросами .DATA-.END (они вроде от самого автора FASM)? Они у меня прекрасно работают с FASM 1.57, но 1.65 - отказывается их понимать. Может в них можно чё подправить (скорее всего какие-то символы более новым фасмом не так понимаются)? А после удаления этих макросов и помещения всех определений данных в секцию данных, прога скомпилировалась но не заработала. Чем же таким существенным отличаются версии FASMов, что код несовместим? Где бы почитать? В whatsnew.txt от 1.65.8 ничего такого не увидел, но там описаны только изменения от 1.65.0
hello нормально компилится. И мои проги более сложные компилятся. Но одна моя самая сложная - глючит. Там около сотни инклудов раскиданы по десяткам папок. Хотя тут же, для проверки, компилю старым фасмом - всё работает.
Проблему в коде я нашёл. В одном месте перед виндовой функцией вместо pushd было pushw. Старый фасм видать сёравно компилил push dword. Но это не решило проблему с макросами .DATA. А я без них никак... У меня вся прога пишется собственными макросами, многие из которых определяют данные примерно вот так: macro СООБЩИТЬ [строки] {common local адр .DATA ;------ в секции данных-------- адр: forward db строки, 13,10 common db 0 .END ;------- конец данных в секции данных-------- pusha pushd MB_OK pushd Заголовок_сообщения pushd адр pushd [hWnd] call [MessageBox] popa} А в коде пришу просто, к примеру СООБЩИТЬ 'Винда, сцука, не дала памяти' ,\ 'пойдём нах отсюдова...'
Единственный плюс фасма это то, что может компилить бинари непосрественно. В общем эта среда не пригодна для написания серьёзных кодов, имхо
Clerk Э... Спокойно. А то, подозреваю, много народу мигом помидоры в Вашу сторону направят. И я буду первым. Если есть желание похоливарить, то предлагаю создать в хипе "MASM vs FASM", где можно будет цивилизованно забросать друг друга го... в общем, чем под руку попадётся. Может даже присоединюсь.
gas ну, каждый чел сам кузнец своих проблем. осталось только спросить - почему бы не перейти на ланг более высокого уровня при таких привычках? код будет лучше, тк ваши макросы его не оптимизируют никак. и ошибок меньше Clerk почему?
qqwe Потомучто: 1. Не совместимо с масмом и мс компиляторами. 2. Нет хидеров, хотя таких как Four-F. Все стандартные структуры и пр. необходимо описывать вручную. 3. Базы нет. Много что написано на масме, на фасме я и не помню чтобы видел какието стоящие внимания коды. 4. Синтаксис весьма не удобный, хотя это мб для меня так.
Хочу иметь вид приложения, отличный от виндовсового. Я сам рисую окошки, кнопки и т.п. У винды я беру только одно окно и экранный буфер. Может это можно сделать на C++, но я его органически не перевариваю. Считаю, язык может быть либо ассемблер, либо типа Бэйсик. Не хватает возможностей Бэйсика - значит буду делать ассемблером. И вообще, я хочу свой язык сделать. И это будет даже не язык. Что-то наподобие CAD электронных схем.
Clerk Я к масму даже не притрагивался. Он может то что мне надо - в любом месте кода определять данные в секции данных?
gas pb попробуйте http://www.purebasic.com На крабе отломанный был в инструментах. Он непосредственно фасм воспринимает, имже и компилит. Может и в сурс на фасме транслировать скрипт. Довольно не плохой компилятор.
gas Для чего это нужно ? Там секция указывается непосредственно. Можно макро сделать, переопределяющее секцию.
Clerk ? а что тут такого страшного? в свое время я перловал из С в фасм. нормально перловалось. в чем тогда проблема с масмом? кстати, в сорцах ваткома есть С перегонщик С-хидеров в васм-хидеры. вполне можно перенастоить и под масм и под фасм. синтаксис во всех случаях интел этого я не понял. некоторые жалуются на атт-интел. а тут что? в любом случае все легко соединяется через объектники эмм.. не знаю. макросами я почти не пользуюсь. с квадратными скобками фасм лучше. с авто оптимизацией переходов тоже. команды можно добавлять, выходные форматеры тоже отсутствие ассума - тоже правильно. чего там еще? встроить во что либо можно. изменить синтаксис. прикрутить свой препроцессор. много чего. имхо вполне нормальный ассемблер. из недостатков - немного замороченное объявление структур в базовом, без макросов, варианте. из недостатков масма - вы его можете любить. но если вам вдруг в нем чтото не понравится, то вам придется либо с этим мириться, либо обходить через задницу, либо не использовать масм.
gas ну прамо таки. если не асм, то только С++. и обязательно даже 2 + 2 на 10 раз перегруженых шаблонах. и васик как образец совершенства. лангов много. пошарьте, авось найдете откровение под себя. например, то, что предлагает клерк позволяет, помнится, писать вперемешку на асме и на том, что они васиком называют, хотя, помойму, ланг там ближе к пасу но есть и более интересные решения, хотя врядли они вас счас заинтересуют
Не очень понял... Могу-ли я в масме сделать так чтобы, например, в коде писать СООБЩИТЬ 'любой текст' ? И чтоб текст разместился в секции данных (чтоб в макросе его не перепрыгивать) . А имена русским языком писать можно? А ещё мне надо сделать макрос (в фасме я не смог) чтобы я мог писать так: ФЛАГИ Имя_ячейки_для_флагов ,\ имя_флага_1 ,\ имя_флага_2 ,\ ... имя_флага_n После этого я должен иметь указанные имена которым присвоено [Имя_ячейки_для_флагов],номер_бита, и имена весов этих флагов (с какимнить префиксом). Щас, в фасме мне приходится городить: имя_флага1 equ [Флаги],0 вес_имя_флага1 = 1 ... имя_флага16 equ [Флаги],15 вес_имя_флага16 = 32768 ... имя_флага32 equ [Флаги],31 вес_имя_флага16 = 2147483648 Я хотел сделать так: macro ФЛАГИ ячейка,[имена] { common local n,m n=0 m=1 forward имя equ ячейка,n вес_#имена = m n = n+1 m = m*2 } Фасм почему-то не может, в блоке forward очередному имени присвоить [ячейка],номер_прохода. Всем перечисленным именам присваивается один и тот же номер бита равный числу переданных макросу имён (последнее значение n). Может кто знает как решить эту проблему?
Я там в последнем сообщении в двух я местах, в примерах макросов, ошибся. Почему на этом форуме нельзя редактировать собственные сообщения? Или я не знаю как?
gas Вам не положено Данные явно указываются в какой секции находятся. Например .data обьявит дальнейшие данные как расположенные в секции данных. Все данные должны быть указаны явно, масм это не скриптовый язык, там нет директив explicit, подобно как в вб. Зачем писать имена русским языком ? Да и вобще опишите задачу нормально. По мойму вы рано пытаетесь использовать асм, он для спецефических задач, не похож на ваш басик, собственно по аналогии которого вы и хотите приложение построить.
Это именно то что мне надо. Чё в фасме так не сделали... Правда придумали макросы .DATA и .END, но под последние версии фасма я не могу их найти. А с теми что есть не могу разобраться чё в них не соответствует... Мне так удобнее. Легче ориентироваться в собственном коде. Особенно по прошествии этак года. Асм для меня родной язык. Я электронщик, разрабатывал всякие штучки на микроконтроллерах. Правда давно этим не занимаюсь. Щас говорят и микроконтроллеры на Си программят. А задача - сделать себе удобную среду программирования. Всё что я видел - мне неудобно. Хотя бы тем что по-русски нельзя ничего писать кроме комментариев.