С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
понятно, на соурсфорже нет последней версии с nofakes.
Я с гитхаба форкнул и собрал. Он при запуске без параметров вываливает инфу по этим опциям.
ну конечно, вы опечатаетесь, сделаете вместо ld a,b - ld a,c, и вас все асмы предупредят.
в нормальной программе, где стек используется как стек, ничего страшного не случится в принципе. про то, что от таких команд может произойти что-то непредвиденное явно написано в доке.
может и EXA уничтожить? и запретить по нескольку команд/параметров юзать? потом пойти дальше и запретить модули, case sensitive, мало ли, везде можно накосячить... я согласен лишь на отключение fakeops по дефолту.
Знаете, когда я был лет на 20 моложе мне тоже казалось что всякие строгие правила, ограничения, отсутствие каких-то мегафич которыми чешется попользоваться ровно два раза оскорбляют мое чувство творца, лишают меня свободы маневра, и вообще заставляют себя дураком чувствовать. Потом, с опытом у меня это "казалось" пропало.
Я даже не про макрос как таковой говорю. Я про косвенный эффект. Если я напишу код который не работает я буду разбираться в том что я написал и почему он не работает. Но я не имею желания разбираться в коде который я не писал. В моем конкретном случае я бы все равно в конце концов отладил код. Но то что нагенерил мне ассемблер дало интерференцию на другую процедуру которая работала правильно, вынуждая искать ошибку 1) в рабочем коде там где ее нет и 2) в эмуляторе.
Во первых, с каких это пор использовать стек так как мне нравится а не так как нравится форумчаниу psb вдруг стало ненормальным ? И почему ?
Во вторых я уже наверное в третьем сообщении пытаюсь от вас добиться, не соблаговолит ли глубокоуважаемый джинн показать все-таки это место в доке ? А то вот я ее читаю, читаю, а места этого не вижу ?
Всенепременно. Во первых непонятно чем он лучше ex af,af'. Во вторых потому-что мнемоника стандартизирована. Хотите EXA - напишите макрос.
Всенепременно. Потому-что по крайней мере на моей памяти один раз эту фичу поменяли (если не ошибаюсь то порядок занесения параметров в стек). Во вторых манипуляция со стеком в одну строку не наглядна, интуитивно понятнее когда это написано в столбик.
Более того, за 20 лет программирования на ассемблере я навскидку не припомню чтобы подобная фича когда-то было действительно нужна, за исключением нескольких случаев особо извращенных макросов. У некоторых программистов правда руки чешутся использовать эту порнографию для генерации пролога и эпилога, так в нормальных ассемблерах существует документированный механизм их генерации через декларацию процедуры с аргументом uses. Там вообще думать не надо, и пролог и симметричный эпилог генерируются автоматически.
Всенепременно. Оригинальный ассемблер всегда с рождения был case insensitive. Хотите ассемблер с шахматами и поэтессами, включайте все эти фишечки ручками, и сами потом кувыркайтесь с тем что вы там навключали.
То как в sjasm сделаны модули это вообще обнять и плакать. Во всех нормальных ассемблерах генерацию бинарного моделя делает линкер. А манмпуляции с подготовкой к линковке готового двоичного кода делает binobj. Во всяком случае у меня лично никогда проблем с этим не возникало. Зачем это в ассемблер тащить ? Делайте линкеры на свой вкус и цвет и настанет вам щщасте.
Более того, я бы ввел в ассемблер еще и строгую типизацию, запрещая допустим загружать в восьмибитный регистр значение переменной которая описана не как восьмибитная. Хочешь сделать запрещенный прием - напиши явно приведение типа, по крайней мере будет понятно что ты знаешь что делаешь, а не опечатался.
Я имею желание писать код, чтобы ассемблер максимально следил за тем что я делаю это правильно. И чтобы максимальное количество ошибок которые он способен отловить он отлавливал. В данном случае под "фичами" поданы сомнительные возможности которые увеличивают количество ошибок и ослабляют контроль за правильностью программы.
psb, обещанные баги кидай в https://github.com/vitamin-caig/sjasmplus
Поскольку я не пользуюсь сим продуктом, в описании необходим тест-кейс (что на входе, что на выходе, что должно быть на выходе и т.п.).
бага есть, вот сценарий: проект 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.
Ретрокладовая продажи
ох лол! я не буду на все подробно отвечать - надоело, как об стенку. самое основное.
внимательность аж зашкаливает! я цитату выше давал из доки и жирным даже выделял то самое место.
руки прочь!
руки прочь / читай доки.
руки прочь!
ТАК ВОЗЬМИ ЖЕ НОРМАЛЬНЫЙ АССЕМБЛЕР!!!1 всех устраивает, тебя не устраивает, больше альтернативы что ли нет? вперед, осваивать "нормальные" ассемблеры, а нам и этого хватает.
был бы это другой форум, я бы более вежливо ответил.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)