Знаете, когда я был лет на 20 моложе мне тоже казалось что всякие строгие правила, ограничения, отсутствие каких-то мегафич которыми чешется попользоваться ровно два раза оскорбляют мое чувство творца, лишают меня свободы маневра, и вообще заставляют себя дураком чувствовать. Потом, с опытом у меня это "казалось" пропало.
Я даже не про макрос как таковой говорю. Я про косвенный эффект. Если я напишу код который не работает я буду разбираться в том что я написал и почему он не работает. Но я не имею желания разбираться в коде который я не писал. В моем конкретном случае я бы все равно в конце концов отладил код. Но то что нагенерил мне ассемблер дало интерференцию на другую процедуру которая работала правильно, вынуждая искать ошибку 1) в рабочем коде там где ее нет и 2) в эмуляторе.
Во первых, с каких это пор использовать стек так как мне нравится а не так как нравится форумчаниу psb вдруг стало ненормальным ? И почему ?
Во вторых я уже наверное в третьем сообщении пытаюсь от вас добиться, не соблаговолит ли глубокоуважаемый джинн показать все-таки это место в доке ? А то вот я ее читаю, читаю, а места этого не вижу ?
Всенепременно. Во первых непонятно чем он лучше ex af,af'. Во вторых потому-что мнемоника стандартизирована. Хотите EXA - напишите макрос.
Всенепременно. Потому-что по крайней мере на моей памяти один раз эту фичу поменяли (если не ошибаюсь то порядок занесения параметров в стек). Во вторых манипуляция со стеком в одну строку не наглядна, интуитивно понятнее когда это написано в столбик.
Более того, за 20 лет программирования на ассемблере я навскидку не припомню чтобы подобная фича когда-то было действительно нужна, за исключением нескольких случаев особо извращенных макросов. У некоторых программистов правда руки чешутся использовать эту порнографию для генерации пролога и эпилога, так в нормальных ассемблерах существует документированный механизм их генерации через декларацию процедуры с аргументом uses. Там вообще думать не надо, и пролог и симметричный эпилог генерируются автоматически.
Всенепременно. Оригинальный ассемблер всегда с рождения был case insensitive. Хотите ассемблер с шахматами и поэтессами, включайте все эти фишечки ручками, и сами потом кувыркайтесь с тем что вы там навключали.
То как в sjasm сделаны модули это вообще обнять и плакать. Во всех нормальных ассемблерах генерацию бинарного моделя делает линкер. А манмпуляции с подготовкой к линковке готового двоичного кода делает binobj. Во всяком случае у меня лично никогда проблем с этим не возникало. Зачем это в ассемблер тащить ? Делайте линкеры на свой вкус и цвет и настанет вам щщасте.
Более того, я бы ввел в ассемблер еще и строгую типизацию, запрещая допустим загружать в восьмибитный регистр значение переменной которая описана не как восьмибитная. Хочешь сделать запрещенный прием - напиши явно приведение типа, по крайней мере будет понятно что ты знаешь что делаешь, а не опечатался.
Я имею желание писать код, чтобы ассемблер максимально следил за тем что я делаю это правильно. И чтобы максимальное количество ошибок которые он способен отловить он отлавливал. В данном случае под "фичами" поданы сомнительные возможности которые увеличивают количество ошибок и ослабляют контроль за правильностью программы.





Ответить с цитированием