Robus, ну просто убери $ и все твои примеры станут сразу нормальными.

Т.е. проблема опять в том, что ты утрируешь немного. И хочешь писать по-своему. Но пойми, Вова напал на нас первый и мы (многокомандвстрочники) просто защищались. Я же не говорю всем как писать, я говорю что имею право писать и мне так удобно. И есть свои достоинства, далеко всё не чёрно-белое. А разные люди приходят и говорят, что ld b,c,d,e — плохая команда, и что $ в строке непонятно к чему привязать. А то, что у меня в коде нет ни первого и не второго видимо спросить забыли.
  • avatar nyuk
  • 1
Чо злой-то?
  • avatar Robus
  • 0
Если так всё радужно и прекрасно писания в строчку, то почему вы так «заминусовали» паренька, который что-то там делал на WCT? Я могу ошибаться, вообщем он утверждал, что пишет закорючками прямо в машинном коде. И главное, он пишет всё в строчку! О… Да у него в одну строчку вмещается так много кода, что вообще кайф. А не хотите ввести запись в формате BASE64? Шикарная штука 6 бит на 8 бит, да при 80-ти символах в строке можно 60 символов текста впихнуть, а сколько кода можно нагородить? НЕТ? А почему нет? Это выходи за пределы ваших правил? А ваших ли? — Не ваших? А… Кто-то это в популярном компиляторе реализовал .?.. Да — точно… Это истина высшей инстанции, только так теперь и надо воспринимать «асм», а то, что это не ассемблер Z80 — уже не важно. Правила языка спускаем на классную фичу. Не важно, что тема ЧИТАЕМОСТЬ кода, «фича» навязанная компилятором важнее. Теперь кто не так пишет как другие называется — «мудак», не важно, что не читается, не важно, что до этого пишем про «давайте писать код так, что бы другой мог заюзать», тут же налепили в строчку, и так удивлённо, — «а вы чего читать не умете, не можете понять ???». Ну тогда компилируйте вот такой код:
LD A,STRAT_ENCODE:LD B,8:LD HL,DATA:XOR (HL),LD (HL),A:INC HL:DJNZ $
И теперь угадываем DJNZ $ на какую из команд должен указывать, предлагаю в компиляторе делать значение адреса $ делать по RND на каждое двоеточие?
Код в строку не читаем. Да ляпать по клавиатуре меньше, да макросы как не использовали, так и не используем, но это не важно, главное это «фича» — в строку писать.
XOR A:LD HL,A:LD ($+3),A:JP (HL)
У вас такой команды LD HL,A нет, сделайте — будет, фича ведь, меньше клавиш нажимать, и модно как. А ($+3) генерируем по-рандому. Но ещё лучше записываем вот так
OzaKW4aECH488n4B1f3J412AaioCfmIGwe4KWW2ICb2
… Смотрите, какая компактная запись, а как читается? Ну просто прекрасно. От того что в СИ можно писать в строчку не значит что код будет читаем, это не значит, что так надо писать. От тог что в русском языке есть набор унижающих других слов, не значит что их надо применять, иначе давайте возвращайте забанненых тролей назад, они просто писали в строчку слова которые вы не можете правильно прочитать, а некоторые не могут прочитать потому что «мудаки». Про «мудака» — то про меня, конечно же. Вот по этой причине я и не выкладываю свои стати, я ведь «мудак» пишу на своём асаме, да в масоне.
  • avatar VBI
  • 1
отличная глава
Удивительно универсальная глава
  • avatar VBI
  • 0
мне нравится.
именно вариант с: нравится.
Дело не только в скорости, а ещё и в том, что у тебя строка делает ЧТО-ТО ОДНО. Это как одна команда в каком-то языке чуть посложнее. Считай, ты макрос ввёл.

Потому что мы все имеем опыта программирования на более высоком уровне, выделение строки для каждой команды слишком «разбавляет» код. Да, я тоже терпеть не могу вереницы присваиваний
ld hl,#4000,de,#4001,bc,6911,(hl),l:ldir

Но пора перестать мешать в кучу код в строку (нормальная идея) от синтаксиса шторма — это не одно и то же.

Голова не обязательно должна кружиться от кода в строчку:
ld hl,#4000 : ld de,#4001 : ld bc,6911 : ld (hl),l : ldir

Разумеется, любую, даже самую хорошую идею можно довести до абсурда. Но что это доказывает? Правильно, ничего.
нет, ну это край, конечно(:


dec bc:ld a,b:or c:jp nz,m1

вполне логическая связка, годная для быстроты ввода.
ld a,h, b,l,i,a,d,e,b,a,n,a,v,r,o,t: or a: jr z,milf

Если это прочитать быстро то можно вызвать демона :) Чем продолжительней строка тем круче демон.
  • avatar nyuk
  • 3
Дядечка очень в тему топика получился. Зажог и смотрит.

я пишу в sjasm код, получается .sna, для отладки ставится jr $, далее ставятся бряки сами.
  • avatar PheeL
  • 1
Я, кстати, в С очень часто обработку ошибок в одну строчку пишу, чтобы простыни снизу равной кол-ву основного кода не было когда с вложением проверки делаешь. Метку «error» использую в качестве аналога деструктора, если до этой проверки были выделены ресурсы (инициализированы драйвера, аллоцирована память (да, я пользуюсь динамическим выделением памяти)).
Типа:
...
if (OS_NULL == queue_hd) { s = S_INVALID_QUEUE; OS_LOG_S(L_WARNING, s); goto error; }
...
error:
    //free allocated resources
    return s;
  • avatar PheeL
  • 2
А ведь ещё можно монитор вертикально повернуть! :) Ну это у тех моделей, где подставка позволяет. Я в таком режиме документацию обычно читаю в *.pdf
Ну просто сидя в каком-нибудь Intellisense редакторе, ты всерьёз будешь мне говорить что может возникнуть проблема от того что у кого-то 5 команд в строке? Ну да, чуть другой интерфейс понадобится, но несерьёзно это как аргумент выдавать.

Напомню, в C разрешено больше одной команды в строке. И мы все до сих пор живы.
  • avatar Raider
  • 1


:)))

(шутка, shinilb0g!)
  • avatar Raider
  • 3
Я скорее о том что существуют два вектора — люди в сторону усложнения, и люди в сторону упрощения.
(Эйнштейн) «Все должно быть изложено так просто, как только возможно, но не проще.»

С этим тесно связан закон достаточного основания. Любая сложность должна быть весомо аргументирована. Но это уже из области построения систем, как таковых.
  • avatar Raider
  • 0
Написать «сочиняешь что попало» хорошая такая аргументация, ага. Перейдем от сущностей на людей ;)
Всё должно быть устроено ровно настолько сложно, насколько нужно! :)

Это не всегда означает просто, увы.
  • avatar Raider
  • 1
А вот с точки зрения рефакторинга — это хорошая, блестящая аргументация, которая бьет все остальное.

я кажется делал так: вводил две метки, одну на строке с командой, чтобы нельзя было ничего вписать между меткой, а вторую ставил вне строки. Т.е.
trb_play
track_pos:  ld hl,0

Соответственно, первая метка это имя функции для call/jump, вторая чисто для данных. Да, ее нельзя использовать «где-то там» без контроля, и это плохо, error-prone.
Плохо уже помню, но кажется конструкций вида label equ $+1 в некоторый момент просто не было… Сейчас лучше использовать label equ $+1, еще и потому на других машинах встретится именно это.