бага есть, вот сценарий: проект http://portage.perestoroniny.ru/dev-...s/AER_Demo.ZIP
ошибка:
Ожидается, что длина метки с именами модулей никогда не выйдет из формата <модуль.метка>SjASMPlus Z80 Cross-Assembler v1.07 RC8 (build 06-11-2008)
Pass 1 complete (0 errors)
Pass 2 complete (0 errors)
Code.a80(176): error: Label not found: AER.MainCode.Logo.rnd
Pass 3 complete
Errors: 1, warnings: 0, compiled: 859 lines, work time: 0.003 seconds
А у нас, получается, что имена всех модулей кода вложены куски кода лепятся слева к метке. Победить пока не пробывал и не знаю с чего начать. Хотелось бы узнать в каком RC этой баги не было. Может это новая фича и её тоже можно ключиком отключить ? Если да, то каким ?
Последний раз редактировалось perestoronin; 21.02.2014 в 15:19.
Ретрокладовая продажи
Знаете, когда я был лет на 20 моложе мне тоже казалось что всякие строгие правила, ограничения, отсутствие каких-то мегафич которыми чешется попользоваться ровно два раза оскорбляют мое чувство творца, лишают меня свободы маневра, и вообще заставляют себя дураком чувствовать. Потом, с опытом у меня это "казалось" пропало.
Я даже не про макрос как таковой говорю. Я про косвенный эффект. Если я напишу код который не работает я буду разбираться в том что я написал и почему он не работает. Но я не имею желания разбираться в коде который я не писал. В моем конкретном случае я бы все равно в конце концов отладил код. Но то что нагенерил мне ассемблер дало интерференцию на другую процедуру которая работала правильно, вынуждая искать ошибку 1) в рабочем коде там где ее нет и 2) в эмуляторе.
Во первых, с каких это пор использовать стек так как мне нравится а не так как нравится форумчаниу psb вдруг стало ненормальным ? И почему ?
Во вторых я уже наверное в третьем сообщении пытаюсь от вас добиться, не соблаговолит ли глубокоуважаемый джинн показать все-таки это место в доке ? А то вот я ее читаю, читаю, а места этого не вижу ?
Всенепременно. Во первых непонятно чем он лучше ex af,af'. Во вторых потому-что мнемоника стандартизирована. Хотите EXA - напишите макрос.
Всенепременно. Потому-что по крайней мере на моей памяти один раз эту фичу поменяли (если не ошибаюсь то порядок занесения параметров в стек). Во вторых манипуляция со стеком в одну строку не наглядна, интуитивно понятнее когда это написано в столбик.
Более того, за 20 лет программирования на ассемблере я навскидку не припомню чтобы подобная фича когда-то было действительно нужна, за исключением нескольких случаев особо извращенных макросов. У некоторых программистов правда руки чешутся использовать эту порнографию для генерации пролога и эпилога, так в нормальных ассемблерах существует документированный механизм их генерации через декларацию процедуры с аргументом uses. Там вообще думать не надо, и пролог и симметричный эпилог генерируются автоматически.
Всенепременно. Оригинальный ассемблер всегда с рождения был case insensitive. Хотите ассемблер с шахматами и поэтессами, включайте все эти фишечки ручками, и сами потом кувыркайтесь с тем что вы там навключали.
То как в sjasm сделаны модули это вообще обнять и плакать. Во всех нормальных ассемблерах генерацию бинарного моделя делает линкер. А манмпуляции с подготовкой к линковке готового двоичного кода делает binobj. Во всяком случае у меня лично никогда проблем с этим не возникало. Зачем это в ассемблер тащить ? Делайте линкеры на свой вкус и цвет и настанет вам щщасте.
Более того, я бы ввел в ассемблер еще и строгую типизацию, запрещая допустим загружать в восьмибитный регистр значение переменной которая описана не как восьмибитная. Хочешь сделать запрещенный прием - напиши явно приведение типа, по крайней мере будет понятно что ты знаешь что делаешь, а не опечатался.
Я имею желание писать код, чтобы ассемблер максимально следил за тем что я делаю это правильно. И чтобы максимальное количество ошибок которые он способен отловить он отлавливал. В данном случае под "фичами" поданы сомнительные возможности которые увеличивают количество ошибок и ослабляют контроль за правильностью программы.
ох лол! я не буду на все подробно отвечать - надоело, как об стенку. самое основное.
внимательность аж зашкаливает! я цитату выше давал из доки и жирным даже выделял то самое место.
руки прочь!
руки прочь / читай доки.
руки прочь!
ТАК ВОЗЬМИ ЖЕ НОРМАЛЬНЫЙ АССЕМБЛЕР!!!1 всех устраивает, тебя не устраивает, больше альтернативы что ли нет? вперед, осваивать "нормальные" ассемблеры, а нам и этого хватает.
был бы это другой форум, я бы более вежливо ответил.
Ассемблер сам по себе - это рота танков, целящихся тебе в ногу. Если кодер ошибся и сделал не так, как хотел, но правильно с точки зрения ассемблера - это отстрел ноги по самые Нидерланды.
Использовать псевдокоманды, которые понимает только компилятор, но не процессор, без осознания, в какую коснтрукцию они будут развёрнуты - это ССЗБ, надо отличать их от команд процессора.
Среди очевидных выстрелов в ногу подпишусь только под попыткой загрузки в 8-битный регистр более чем 8 бит данных.
Все любят гипножабу
ram_scan, для вас есть отличнейший ассемблер от фирмы ZILOG вот им и пользуйтесь
а sjasm оставьте нам.
С уважением,
Jerri / Red Triangle.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Чего-то не дает с мобилы. Завтра с компа попробую.
Но решил так не делать. Жаль. Написание кода на ассемблере требует отладки полученного бинаря. Боюсь тебя огорчить, но если твой код вдруг внезапно начнет модифицировать себя или не то, что ты планировал, на ассемблер свалить, увы, не получится.
Подумать надо. Z80 не может выполнить команду ld h,ixh. Варианты имитации ld rp1,rp2 расписаны в лохматых годах в Инфоркомовском трехтомнике. Пошаговую отладку кода что в эмуляторе, что в STS никто не отменял. Если Вам не нравится удобная фича, это не значит, что ее надо выпилить совсем.
Тем, что многие редакторы, видя апостроф, подсвечивают все дальшейшее строкой.
Это для Вас она ненаглядна. А мне хочется больше кода на одном экране видеть. Подеремся?
А компьютенные интерфейсы - текстовыми. Однако прогресс никто не отменял.
Ога, надо сделать ключи --tasm128compatible, --zasmcomaptible, --xascompatible, --zx-review_compatible и так далее. А то писавшие последний раз 20 лет назад тоже найдут 100500 отличий от канонiчного ассемблера Z80 и будут говорить, что "новомодные фишки" должны быть опциональными.
Плодите много сущностей! С ними так мило ностальгировать!
Эм... Напомните, в какой версии SjASM появились переменные.
Этот умеет так.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)