Спасибо за помощь в поисках "света" ...
Цитата:
Сообщение от 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. После да же из вне можно будет делать ссылки на любые метки !!!
Спасибо за помощь в поисках "света" ...
Цитата:
Сообщение от 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, но эту команду нужно будет делать в самом начале асемблируемого текста !!!
Спасибо за помощь в поисках недостатков !!!