Robus, ну просто убери $ и все твои примеры станут сразу нормальными.
Т.е. проблема опять в том, что ты утрируешь немного. И хочешь писать по-своему. Но пойми, Вова напал на нас первый и мы (многокомандвстрочники) просто защищались. Я же не говорю всем как писать, я говорю что имею право писать и мне так удобно. И есть свои достоинства, далеко всё не чёрно-белое. А разные люди приходят и говорят, что ld b,c,d,e — плохая команда, и что $ в строке непонятно к чему привязать. А то, что у меня в коде нет ни первого и не второго видимо спросить забыли.
Если так всё радужно и прекрасно писания в строчку, то почему вы так «заминусовали» паренька, который что-то там делал на WCT? Я могу ошибаться, вообщем он утверждал, что пишет закорючками прямо в машинном коде. И главное, он пишет всё в строчку! О… Да у него в одну строчку вмещается так много кода, что вообще кайф. А не хотите ввести запись в формате BASE64? Шикарная штука 6 бит на 8 бит, да при 80-ти символах в строке можно 60 символов текста впихнуть, а сколько кода можно нагородить? НЕТ? А почему нет? Это выходи за пределы ваших правил? А ваших ли? — Не ваших? А… Кто-то это в популярном компиляторе реализовал .?.. Да — точно… Это истина высшей инстанции, только так теперь и надо воспринимать «асм», а то, что это не ассемблер Z80 — уже не важно. Правила языка спускаем на классную фичу. Не важно, что тема ЧИТАЕМОСТЬ кода, «фича» навязанная компилятором важнее. Теперь кто не так пишет как другие называется — «мудак», не важно, что не читается, не важно, что до этого пишем про «давайте писать код так, что бы другой мог заюзать», тут же налепили в строчку, и так удивлённо, — «а вы чего читать не умете, не можете понять ???». Ну тогда компилируйте вот такой код:
И теперь угадываем DJNZ $ на какую из команд должен указывать, предлагаю в компиляторе делать значение адреса $ делать по RND на каждое двоеточие?
Код в строку не читаем. Да ляпать по клавиатуре меньше, да макросы как не использовали, так и не используем, но это не важно, главное это «фича» — в строку писать.
XOR A:LD HL,A:LD ($+3),A:JP (HL)
У вас такой команды LD HL,A нет, сделайте — будет, фича ведь, меньше клавиш нажимать, и модно как. А ($+3) генерируем по-рандому. Но ещё лучше записываем вот так
OzaKW4aECH488n4B1f3J412AaioCfmIGwe4KWW2ICb2
… Смотрите, какая компактная запись, а как читается? Ну просто прекрасно. От того что в СИ можно писать в строчку не значит что код будет читаем, это не значит, что так надо писать. От тог что в русском языке есть набор унижающих других слов, не значит что их надо применять, иначе давайте возвращайте забанненых тролей назад, они просто писали в строчку слова которые вы не можете правильно прочитать, а некоторые не могут прочитать потому что «мудаки». Про «мудака» — то про меня, конечно же. Вот по этой причине я и не выкладываю свои стати, я ведь «мудак» пишу на своём асаме, да в масоне.
Дело не только в скорости, а ещё и в том, что у тебя строка делает ЧТО-ТО ОДНО. Это как одна команда в каком-то языке чуть посложнее. Считай, ты макрос ввёл.
Потому что мы все имеем опыта программирования на более высоком уровне, выделение строки для каждой команды слишком «разбавляет» код. Да, я тоже терпеть не могу вереницы присваиваний
ld hl,#4000,de,#4001,bc,6911,(hl),l:ldir
Но пора перестать мешать в кучу код в строку (нормальная идея) от синтаксиса шторма — это не одно и то же.
Голова не обязательно должна кружиться от кода в строчку:
Я, кстати, в С очень часто обработку ошибок в одну строчку пишу, чтобы простыни снизу равной кол-ву основного кода не было когда с вложением проверки делаешь. Метку «error» использую в качестве аналога деструктора, если до этой проверки были выделены ресурсы (инициализированы драйвера, аллоцирована память (да, я пользуюсь динамическим выделением памяти)).
Типа:
Ну просто сидя в каком-нибудь Intellisense редакторе, ты всерьёз будешь мне говорить что может возникнуть проблема от того что у кого-то 5 команд в строке? Ну да, чуть другой интерфейс понадобится, но несерьёзно это как аргумент выдавать.
Напомню, в C разрешено больше одной команды в строке. И мы все до сих пор живы.
Я скорее о том что существуют два вектора — люди в сторону усложнения, и люди в сторону упрощения.
(Эйнштейн) «Все должно быть изложено так просто, как только возможно, но не проще.»
С этим тесно связан закон достаточного основания. Любая сложность должна быть весомо аргументирована. Но это уже из области построения систем, как таковых.
А вот с точки зрения рефакторинга — это хорошая, блестящая аргументация, которая бьет все остальное.
я кажется делал так: вводил две метки, одну на строке с командой, чтобы нельзя было ничего вписать между меткой, а вторую ставил вне строки. Т.е.
trb_play
track_pos: ld hl,0
Соответственно, первая метка это имя функции для call/jump, вторая чисто для данных. Да, ее нельзя использовать «где-то там» без контроля, и это плохо, error-prone.
Плохо уже помню, но кажется конструкций вида label equ $+1 в некоторый момент просто не было… Сейчас лучше использовать label equ $+1, еще и потому на других машинах встретится именно это.
Т.е. проблема опять в том, что ты утрируешь немного. И хочешь писать по-своему. Но пойми, Вова напал на нас первый и мы (многокомандвстрочники) просто защищались. Я же не говорю всем как писать, я говорю что имею право писать и мне так удобно. И есть свои достоинства, далеко всё не чёрно-белое. А разные люди приходят и говорят, что ld b,c,d,e — плохая команда, и что $ в строке непонятно к чему привязать. А то, что у меня в коде нет ни первого и не второго видимо спросить забыли.
Код в строку не читаем. Да ляпать по клавиатуре меньше, да макросы как не использовали, так и не используем, но это не важно, главное это «фича» — в строку писать.У вас такой команды LD HL,A нет, сделайте — будет, фича ведь, меньше клавиш нажимать, и модно как. А ($+3) генерируем по-рандому. Но ещё лучше записываем вот так… Смотрите, какая компактная запись, а как читается? Ну просто прекрасно. От того что в СИ можно писать в строчку не значит что код будет читаем, это не значит, что так надо писать. От тог что в русском языке есть набор унижающих других слов, не значит что их надо применять, иначе давайте возвращайте забанненых тролей назад, они просто писали в строчку слова которые вы не можете правильно прочитать, а некоторые не могут прочитать потому что «мудаки». Про «мудака» — то про меня, конечно же. Вот по этой причине я и не выкладываю свои стати, я ведь «мудак» пишу на своём асаме, да в масоне.
именно вариант с: нравится.
Потому что мы все имеем опыта программирования на более высоком уровне, выделение строки для каждой команды слишком «разбавляет» код. Да, я тоже терпеть не могу вереницы присваиваний
Но пора перестать мешать в кучу код в строку (нормальная идея) от синтаксиса шторма — это не одно и то же.
Голова не обязательно должна кружиться от кода в строчку:
Разумеется, любую, даже самую хорошую идею можно довести до абсурда. Но что это доказывает? Правильно, ничего.
вполне логическая связка, годная для быстроты ввода.
Если это прочитать быстро то можно вызвать демона :) Чем продолжительней строка тем круче демон.
Типа:
Напомню, в C разрешено больше одной команды в строке. И мы все до сих пор живы.
:)))
(шутка, shinilb0g!)
(Эйнштейн) «Все должно быть изложено так просто, как только возможно, но не проще.»
С этим тесно связан закон достаточного основания. Любая сложность должна быть весомо аргументирована. Но это уже из области построения систем, как таковых.
Это не всегда означает просто, увы.
я кажется делал так: вводил две метки, одну на строке с командой, чтобы нельзя было ничего вписать между меткой, а вторую ставил вне строки. Т.е.
Соответственно, первая метка это имя функции для call/jump, вторая чисто для данных. Да, ее нельзя использовать «где-то там» без контроля, и это плохо, error-prone.
Плохо уже помню, но кажется конструкций вида label equ $+1 в некоторый момент просто не было… Сейчас лучше использовать label equ $+1, еще и потому на других машинах встретится именно это.