Важная информация

User Tag List

Страница 3 из 13 ПерваяПервая 1234567 ... ПоследняяПоследняя
Показано с 21 по 30 из 126

Тема: ASAM Compiler By Rob F. / Entire Group ...

  1. #21
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,824
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    239
    Поблагодарили
    101 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Роб, бага что ли опять...

    start_
    TABLE000 DB 12,4,14,12,5,14,12,6,14,12,7,14,12,8,14,12,9,14,12 ,10,14,12,11,14,8,4,1,8,5,1,8,6,1,8,7,1,8
    end_
    Savebin "BT.C",START_,end_
    Сохраняет не 37 байт, как надо, а 36, все, что дальше 8,7,1 игнорируется в дуст. Грубо говоря длина строки DB получается 36 байт максимум. Так? Если так, то чего компилер не ругается Too long line, неясно. Молча игнорирует, подлец, и все. То есть поделить строчку на 2 можно конечно, только об этом надо знать, а компилер ошибку не выдает...

    Да, что еще хотелось бы - чтобы компилер прекратил наконец издеваться и выдавать только одну первую ошибку. А то у меня на Атлоне 2000XP+ прога какая-то моя старинная в 5300 строк компилится секунд 9-10 - задалбывает такое каждый раз. Пускай до конца ассемблирует, и все ошибки либо сразу на экран выводит, либо в файл кладет errors.txt например... А лучше и туда и туда.

    Ну и кроме того, по поводу вышеописанного локального INCLUDE. Можно сделать как в sjAsm MODULE (aprisobal описывал в теме про SjASMPlus).

    Да, и вопрос. Листинг компилируемой программы можно как-нибудь получить? В стандартном виде "АДРЕС КОДЫ АССЕМБЛЕРНЫЙ ТЕКСТ"?
    А то я что-то не увидел в хелпе такого... А может просто меня в 3 ночи плющит
    Последний раз редактировалось Shadow Maker; 09.03.2005 в 03:01.
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  2. #22
    Veteran Аватар для SMT
    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    модульность в стиле паскаля не обладает достаточной гибкостью.
    лучше её сделать в виде пространств имён c++, то есть указывать в тексте программы, к какому пространству относится кусок кода. например:
    Код:
    namespace module1
    {
    proc1 ei
          ret
    proc2 call proc1
          di
          ret
    }
    namespace module2
    {
    proc1 call module1;;proc1
          ret
    }
    // основная программа:
          call module1;;proc1
          call module2;;proc1
    using namespace module2   // если метка не найдена,
                              // пытаться найти ту же метку,
                              // но с префиксом module2;;
          call proc1  // вызов из module2
    using namespace module1
          call proc1  // вызов из module1
    преимущества по сравнению с delphi-подходом очевидны:
    1. можно модуль держать в нескольких файлах
    Код:
    namespace mod1
    {
       include "proc1"
       include "proc2"
    }
    2. можно в одном файле держать несколько модулей (как в примере выше)
    3. можно дописывать стандартные модули новыми функциями:
    Код:
    namespace std
    {
       ... стандартная библиотека
    }
    namespace lib1
    {
       ...
    }
    // дальше основная программа
    ...
    namespace std // снова открываем модуль std и добавляем в него процедуры
    {
       ...
    }
    4. можно делать аналоги c++ шаблонов, когда один и тот же исходник
    компилируется в разный код, в зависимости от опций, и метки разных
    вариантов доступны из одной программы
    Код:
    // пускай это библиотека для работы с обычным экраном
    namespace lib_zx
    {
       scr_delta equ 32
       use_attr  equ 1
       include "maincode"
       // maincode, используя условную трансляцию (if use_attr=1)
       // делает код, работающий или не работающий с атрибутами.
       // и использует scr_delta символов в строке
    }
    // пускай это библиотека для работы с чёрно-белым режимом пентагона (512 пикселей)
    namespace lib_pentagon_512
    {
       scr_delta equ 64
       use_attr  equ 0
       include "maincode"
    }
    а в основной программе
            call detect_pentagon
            jz p_512
            using namespace lib_zx
            call print1
            call print2
            ...
    p_512   using namespace lib_pentagon_512
            call print1
            call print2
    
    или
    
            call detect_pentagon
            call z,lib_pentagon_512;;print2
            call nz,lib_zx;;print2
    5. реализуется в компиляторах легче, чем искусственные локальные метки
    паскалевских модулей. если открыт namespace, то принудительно ко всем новым
    меткам приписывается префикс. если встречается метка, пытаться найти её
    с префиксом текущего namespace'a, а потом уже без префикса. если не открыт
    namespace, то если метки нет, пытаться найти её с префиксом активного namespace'a

    p.s. конечно, в c++ пространства могут быть вложены с произвольной глубиной,
    но для спектрума пока достаточно будет без вложений

    что за глюк движка??? поставил 4 тэга CODE, а ругается "Вы вставили слишком много картинок в свою подпись или в это сообщение. Пожалуйста, вернитесь назад, уменьшите количество картинок и попробуйте снова. Картинками считаются также: смайлы, тэги BB-кодов img и тэги HTML img."

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

    оказалось, не ест два двоеточия. заменил на ;;

  3. #23
    Veteran Аватар для lvd
    Регистрация
    23.01.2005
    Сообщений
    1,113
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SMT
    4. можно делать аналоги c++ шаблонов, когда один и тот же исходник
    компилируется в разный код, в зависимости от опций, и метки разных
    вариантов доступны из одной программы
    Ага, вот кто-то по поводу ооп в аль-асме пугался. Скоро будет ооп в асаме =)

  4. #24
    Activist Аватар для acidrain
    Регистрация
    01.03.2005
    Адрес
    Russia, Krasnodar
    Сообщений
    433
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shadow Maker

    [...]

    Ибо меня еси честно уже достало, что я называю по привычке в разных кусках программы одними и теми же метками, а при INCLUDE естессно ругается что двойная метка, вот и приходится сначала ассемблировать, а потом грузить бинарником.
    Простите меня амижника заядлого =), предлагаю ввести метки локальные, которые действуют в данной п/п. например,
    Код:
    main:  move.l a0,(a7)+ 
             bla, bla, bla
    .block subq #1,d0
             bne .block
    newdir ...
    block
    Т.е. метка, которой предшествует точка является локальной и действительна до тех пор, пока компилятор не встретит глобальной метки (main, newdir, block - те. без точки). Очень удобно, проверенно годами собственного опыта

  5. #25
    Veteran Аватар для lvd
    Регистрация
    23.01.2005
    Сообщений
    1,113
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от acidrain
    Простите меня амижника заядлого =), предлагаю ввести метки локальные, которые действуют в данной п/п. например,
    Код:
    main:  move.l a0,(a7)+ 
             bla, bla, bla
    .block subq #1,d0
             bne .block
    newdir ...
    block
    Т.е. метка, которой предшествует точка является локальной и действительна до тех пор, пока компилятор не встретит глобальной метки (main, newdir, block - те. без точки). Очень удобно, проверенно годами собственного опыта
    Угу, но они все взрощены на дельфях и на цпп, им подавай пространства имён, ооп, шаблоны =) Им нас не понять =)))

  6. #26
    Master
    Регистрация
    04.03.2005
    Адрес
    Ukraine, Kiev
    Сообщений
    792
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Talking Спасибо за помощь в поисках "света" ...

    Цитата Сообщение от Shadow Maker
    Есть просьб - можно добавить команду некоего немного извратного INCLUDE, при котором метки будут не глобальные, а локальные? То есть этот INCLUDE, назовем его INCLOCAL к примеру, будет работать таким образом - когда встречается INCLOCAL, компилятор ассемблирует подинклудиемый файл, но с его собственными метками, которые не передаются основной программе.

    То есть выглядит так: есть 1.asm, в котором есть INCLOCAL 2.asm.
    Это аналогично тому, как если бы мы сначала отассемблировали файл 2.asm, а потом его подгрузили в 1.asm как бинарник.

    Ибо меня еси честно уже достало, что я называю по привычке в разных кусках программы одними и теми же метками, а при INCLUDE естессно ругается что двойная метка, вот и приходится сначала ассемблировать, а потом грузить бинарником.
    Да ... Над INLOCAL я уже думал ... Но так и не сделал ... Нужно сделать ... Но вообще-то, это можно реализовать и сейчас, только думаю это не очень вам понравится, поскольку для этого нужно перелопачивать исходники ... Просто перед каждой меткой нужно поставить @, и тогда он будет думать, что это метка для макроса, после в середине INCLUD'а поставить в самом начале ".1", а в конце "..", что будет указанием на исполнение макроса, в данном случае это будет повторение один раз ... Но конено это не удобство с точки зрения дописывания этих пресловутых @ !!! Но сегодня вечером я сделаю то что вы хотите, только пусть это называется не INLOCAL, а команда AddToLabel, что будет означать к каждой метке приписать имя некоего проекта, который будет указваться в AddToLabel. Если у вас будет метка PRINT а имя проекта SuperPuper.Ofiget, то в компиляторе он её запомнит как SuperPuper.Ofiget.PRINT. После да же из вне можно будет делать ссылки на любые метки !!!
    AAA когда меня режут, я терплю, но когда дополняют, становится нестерпимо.

  7. #27
    Master
    Регистрация
    04.03.2005
    Адрес
    Ukraine, Kiev
    Сообщений
    792
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Talking Спасибо за помощь в поисках "света" ...

    Цитата Сообщение от Shadow Maker
    Роб, бага что ли опять...



    Сохраняет не 37 байт, как надо, а 36, все, что дальше 8,7,1 игнорируется в дуст. Грубо говоря длина строки DB получается 36 байт максимум. Так? Если так, то чего компилер не ругается Too long line, неясно. Молча игнорирует, подлец, и все. То есть поделить строчку на 2 можно конечно, только об этом надо знать, а компилер ошибку не выдает...

    Да, что еще хотелось бы - чтобы компилер прекратил наконец издеваться и выдавать только одну первую ошибку. А то у меня на Атлоне 2000XP+ прога какая-то моя старинная в 5300 строк компилится секунд 9-10 - задалбывает такое каждый раз. Пускай до конца ассемблирует, и все ошибки либо сразу на экран выводит, либо в файл кладет errors.txt например... А лучше и туда и туда.

    Ну и кроме того, по поводу вышеописанного локального INCLUDE. Можно сделать как в sjAsm MODULE (aprisobal описывал в теме про SjASMPlus).

    Да, и вопрос. Листинг компилируемой программы можно как-нибудь получить? В стандартном виде "АДРЕС КОДЫ АССЕМБЛЕРНЫЙ ТЕКСТ"?
    А то я что-то не увидел в хелпе такого... А может просто меня в 3 ночи плющит
    Точно баг ... Я и вправду не проверяю на переполнение в размере строки !!! Вообще-то, её размер 256 байт, но при компиляции он прописывает вместо каждого числа или любой метке в списке оных шесть байт, как бы переводя их с фиксированный размер ... Поэтому 37 байт получились аж 222 да плюс команда ... Вообщем баг мой, я разберусь ...

    У всех прошу прощение за маленькую скорость компиляции ... Я половину написал на асме а остальные добавления оставил на высоком уровне ... Как только разберёмся с багами, переведу всё на асм и будет скорость - глазом не мргнёте ... Если взять версию где-то 12-ую, то на моём 266 десять тысяч строк компилятся 5-6 секунд, теперь еонечно куча добавлений, которые затормозили скорость ... Но не волнуйтесь в итоге будет всё на высшем уровне !!!

    Со списком ошибок я то же поработаю ... Там есть такая команда SaveAllLabel ... Я в этот листинг вставлю и список ошибок ... Или может сделать команду SaveAllErrors, за одно и OpenCompileResult, но эту команду нужно будет делать в самом начале асемблируемого текста !!!

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

  8. #28
    Master
    Регистрация
    04.03.2005
    Адрес
    Ukraine, Kiev
    Сообщений
    792
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Question Мои привычки ...

    Хотел бы ещё кое что добавить. На меня ругалисть, что я часто пишу "!!!" или "..." ! Это моя привычка, которая перешла в мошинальность ... Я всегда так писал, и очень сложно перестроиться. Я вовсе не кричу на вас, а восклицательными знаками выдиляю акцент на фразу, да бы обратили внимание ! Если это вам не приятно, я постараюсь переучиться ...
    AAA когда меня режут, я терплю, но когда дополняют, становится нестерпимо.

  9. #29
    Veteran Аватар для jtn
    Регистрация
    15.01.2005
    Адрес
    Kievska Rus
    Сообщений
    1,149
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Robus
    Спасибо ! Доки я не умею писать ... Может кто поможет ??? А перенос из TASM'а может быть проблематичен только один - синтаксис BIN'а !!! Правда ещё с командой PHASE и UNPHASE, в моём асме это ORGOF !!!
    вглубь еще не влезал, потому и спрашиваю, а что будет с макросами и локальными переменными: те что в Tasm'e ...name обозначаются (на самом деле в тасме вместо трех точек подставляется текстовая инкрементирующаяся при .LOCAL переменная).
    можно ли передавать в макрос текстовую строку и двигаться по ней курсором?
    есть ли подобие Display "blabla",Label ?
    присвоение параметру макроса (если это текстовая строка) значения, т.е.
    \0 equ #4000
    или
    \1 = mnu*10+abc

    Если этого нет, то видимо придется повременить пока со сменой ассемблера.

    p.s. есть пакетный конвертор tasm>txt (на пц) кому надо обращайтесь

  10. #30
    Veteran Аватар для jtn
    Регистрация
    15.01.2005
    Адрес
    Kievska Rus
    Сообщений
    1,149
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Proteus
    Я твои доки всю жизнь почему-то с первого раза понимал, и без примеров. Непонятно что там кому-то может не нравиться.
    написанное по-русски, а не на непонятном языке формул, гораздо легче понять (извините за тафтологию). мне не "не нравиться" как Вы выразились, просто есть какое-то непонимание.

    p.s. не сочтите за наезд.

Страница 3 из 13 ПерваяПервая 1234567 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Colorbok^Phantom Family Group
    от rajdee в разделе Графика
    Ответов: 12
    Последнее: 20.01.2011, 23:32
  2. C compiler
    от vitasam в разделе Программирование
    Ответов: 17
    Последнее: 25.08.2005, 16:42

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •