редактор для фасма

Тема в разделе "WASM.PROJECTS", создана пользователем _basmp_, 10 июл 2005.

  1. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia
    Помойму никак....
     
  2. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    Кое-что добавлено http://basmp.narod.ru

    за ошибку с памятью прошу пока не критиковать. Разве что словите ее.
     
  3. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    новый вер (па-5)

    внял критике осени и поправил ряд ошибок (ряд не поправил). в основном по ГЦ.

    небольшое добавление - ресайзимые диалоги можно ресайзить драганьем правой кнопкой (идея Critical Error с рсдн). (есть небольшой глюк: при пересечении при ресайзе правой или нижней границ окно поведет себя странно)

    Да. Интересует ваше мнение. Написал скрипт-авторасставлялку контролов на диалоге - autodlg. Находится в файле autodlg.b , описан в changes.txt . Помоему удобнее и быстрее чем визуальные расставлятели для большинства случаев. Вот думаю в Цэшную либу такое вбить, но может кто еще чего интересного предложит/поправит/добавит (знаю, что не я это подход изобрел. я его честно-благородно слямзил).

    Пример описания диалога (подробности в changes.txt):

    Код (Text):
    1. d = autodlg{ name = 'Search/Replace', w = 300, h = 120,
    2.         5,
    3.         { -40, 'Find what', 2, edit{ name = "from" } },
    4.         5,
    5.         { -40, 'Replace to', 2, edit{ name = "to" } },
    6.         10,
    7.         -90, { 20, checkbox{ name= "regular expression" }, 20 },
    8.         10,
    9.         10,
    10.         { 2, button{ name = "Search" }, 2, button{ name = "Replace" }, 2 },
    11.         10
    12.     };
    13.  
    14. basmp:ins( d );
    по поводу поворота лицом к людям:
    - пункты в <Main Menu> - независимые утили (там и хелпник и туториал),
    - словарик <mueller> без соответствующей бд в папке (см тамже ниже) не работает и прога вылетает (докалечу БД чуть попозже).

    ну и вобщем на пока все. в changes.txt - подробнее.
     
  4. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Как народ вообще с Фасмом работает, если нет среды программирования?
    Пару строк поправит, потом в Олли, потом в Фасм, потом опять в Олли, потом опять в Фасм?

    Редактор этот поддерживает отладку по шагам хотя бы, показ содержимого регистров?
     
  5. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    Пошаговую отладку поддерживает Оля - обычно вполне хватает. Если программа перед написанием сначала продумывается, то отлаживаются в основном только критические точки. Есть поползновения в сторону символьной отладки в последнее время, а также всякие финты
     
  6. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Сабжевый редактор я не скачивал и не смотрел, т.к. моя квалификация как асмера довольно низкая, пока не нужно мне оно. Но что мешает вставить хотя бы жесткий шаг CC, мягкий шаг для своих прог вобщем-то не нужен. Вотчер можно сделать для начала без FPU - тоже не сложно. Извиняюсь, если чего не то говорю...
     
  7. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Кажется, опять глупости говорю... CC - это под ДОС_ом было, а под Виндой аппаратные точки останова? Ну вам асмерам виднее будет, как трассировку делать...
     
  8. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    persicum
    кодить надо так чтоб было мало ошибок :)
    для бряков забиваю int3, дебажу олькой, и весьма доволен
     
  9. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    Оригинальный редактор для фасма - просто редактор с подсветкой синтаксиса. Другие самодельные ИДЕ в этом смысле то же самое. Однако эти ИДЕ (я имею в виду в частности winasm studio и radasm) обычно имеют плагинный механизм расширения, т.е. теоретически возможно написание такого отладчика как надстройки. Просто никто этим не занимается - вот и всё. И задача это непростая. Хотя для масма для winasm studio такая надстройка написана, но она требует ассемблирования с отладочной информацией, которая в фасме не выдается (по крайней мере не выдавалась).

    Но трудно обычно только поначалу. если регулярно писать на асме - появляется опыт, и все идет (почти) как по маслу. Дело в том, что в ЯВУ код в редакторе и отладчике сильно разнится, поэтому там и есть потребность в таком представлении отлаживаемой программы, а при написании кода на чистом асме код в отладчике практически соответствует коду в редакторе, поэтому нет острой нужды в таком представлении.
     
  10. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Только подсветка синтаксиса - не помогает для больших проектов.
    Нужен также Intelli-Sense а также информационные возможности:

    - переход на код, где элемент кода был определён
    - переход на код, где элемент кода был использован
    - Tooltip-ы всяческие при наведении на элементы кода (например, при наведении курсора на имя структуры хочу видеть её элементы или при наведении на константу - её значение)

    Такой IDE сейчас у меня в разработке, но дело движется медленно.
     
  11. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    persicum
    Ща я вас разочарую.
    Такого не планировалось даже в самом начале, зачем дублировать олю? Хотя такие возможности на уровне скриптов на сегодняшний день и есть (асм, дизасм, винапи). Изначально планировался именно редактор с подсветкой и навигацией как писал AsmGuru62
    тк заранее неизвестно чего захочется дальше, а начинать писать плугин - не всегда удобно, то была использована более старая разработка (я тогда по выездам много работал, на компе заказчика - всегда голо, желания аж брыжжут, места на винте нет. Как быть? Не найдя по теме - намалевал сам такой себе быстрый построитель утилит на колене). Потом познакомился с SI и необходимости большей частью пропала. Впрочем, сам движок помаленьку развиваю, тк актуальность его не пропала для меня досе.

    Вот например простейший нотепаб с нумерацией строк, чтением/записью и регулярным поиском

    Код (Text):
    1. _ed = multiedit{};
    2. _ed.command = function()
    3.     if reason == 1 then
    4.         this.parent.parent.ed = this;
    5.         this.style.margin[1] = { type = 'n', w = '999' };
    6.     end
    7. end
    8.  
    9. _path = edit{ name = pwd(), comment = "Path/Name" };
    10. _path.command = function()
    11.     if reason == 1 then
    12.         this.parent.parent.path = this;
    13.     end
    14. end
    15.  
    16. _load = button{ name = "Load file" };
    17. _load.command = function()
    18.     local p = this.parent.parent;
    19.     if reason == 10 then
    20.         local fn = p.path.name;
    21.         local a = attr( fn );
    22.         local f;
    23.         if a ~= nil and a.size ~=nil then
    24.             f = io.open( fn, "r" );
    25.             p.ed.name = f:read("*a");
    26.             f:close();
    27.         else
    28.             p.ed.name = "";
    29.         end
    30.     end
    31. end
    32.  
    33. _save = button{ name = "Save file" };
    34. _save.command = function()
    35.     local p = this.parent.parent;
    36.     if reason == 10 then
    37.         local fn = p.path.name;
    38.         local f;
    39.         f = io.open( fn, "w" );
    40.         if f ~= nil then
    41.             f:write( p.ed.name );
    42.             f:close();
    43.         end
    44.     end
    45. end
    46.  
    47. _that = edit{comment = "regexp search mask"}
    48. _that.command = function()
    49.     if reason == 1 then
    50.         this.parent.parent.that = this;
    51.     end
    52. end
    53.  
    54. _seek = button{ name = "Seek" };
    55. _seek.command = function()
    56.     local p = this.parent.parent;
    57.     if reason == 10 then
    58.         local t = p.ed.name .. "\n";
    59.         local l;
    60.         local z = 0;
    61.         local pat = p.that.name;
    62.         for l in t:gmatch("([^\\n]*)\\n") do
    63.             if l:match(pat) then
    64.                 p.ed.line = z;
    65.                 break;
    66.             end
    67.             z = z + 1;
    68.         end
    69.     end
    70. end
    71.  
    72.  
    73. dlg = autodlg{
    74.         name = "Simply Notebap",
    75.         w = 500, h = 400,
    76.         1,              // отступ
    77.         -7, {-10, _seek, 1, _that}, // верхняя строка
    78.         1,              // отступ
    79.         _ed,                // окно редактора
    80.         1,              // отступ
    81.         -7, {-20, _load, 1, -20, _save, 1, _path}, // нижняя строка
    82.         1               // отступ
    83. }
    84.  
    85. basmp:ins(dlg):show();
    копипастить и запускать удобней всего из окна туториала
    впрочем, кто знает..
     
  12. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    в продолжение разговора с киберманьяком намалевал своего рода векторный граф редактор.
    - основное достоинство - маленький.
    - позволяет работать с прямыми, бета-сплайнами, безье и текстом (не редактируется).
    - позволяет заливать цветом и картинками с альфа каналом (картиночная заливка пока не сохраняется)
    - позволяет маскировать с любой глубиной вложености

    (был слегка доведен gi и исправлено пару помарок)

    демка
    [​IMG]
    (не стреляйте в пианиста он играет как умеет)

    в аттаче она же, но с сорцом еешным

    http://basmp.narod.ru/
     
  13. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    новая версия. чего нового из того что помню вкратце:

    в движке
    - исправления ошибок
    - контролы не имеющие запрошенных свойств возвращают false
    - добавлен встроеный дизассемблер (атт)
    - в асм движке в описаниях функциональных членов появилась возможность задавать типы входных и выходного параметра
    - описал задание стилей и колоризера для мультиедита

    в скриптах
    - повыносил разные части в разные файлы
    - в файлпикер диалоге появился необязательный параметр (регексп) маски файлов - filter
    - кроме того, из callback доступно поле this.filePeekDlg указывающее на топлевел файлпикер диалог
    - для внесения своих действий в постинициализационную предзапускную процедуру atstart() не обязательно искать и править ее. достаточно добавить свою функцию в конец массива startup
    - добавлен файл pe/exepe.inc со структурами и дефайнами для работы с ms-pe форматом. (спасибо Sekretarsha-е с васма)

    в changes.txt подробнее