уверенность только в том, что хорошо оформленный исходник ты сам сможешь довольно быстро понять при первой необходимости.
я отлично запомнил метку для подпрограммы у Коши:
GROB
ща и ты получишь :)
Деня, твой звин сильно расхолаживает.
Есть большой смысл ставить метки в начале строки — так ты визуально отделяешь начало подпрограммы от кода:
ld a,(lives)
or a
jr nz,notGameOver
;
ld a,GS_GAMEOVER
ld (gameState),a
ret
notGameOver
ld a,GS_LOADING
ld (gameState),a
«notGameOver», деня! а не " notGameOver"
почему? потому что другие асмы воспринимают эту метку иначе.
отсюда же:
setVirusFlag
ex af,af'
ld a,1
ld (mapVirus),a
ld a,virusDelay
ld (mapNoVirusCount),a
call putVirusToRadar
ex af,af'
ret
минимум — пробел в начале строки перед кодом, и никаких пробелов для меток, переменных.
В общем, все две твои игры которые я портировал, начинались с того что я приводил текст в нормальный вид, я, блин, ФОРМАТИРОВАЛ КОД с начала. зачем? да он не компилируется!
и да, я пользуюсь двумя-тремя табами перед каждой строкой кода :)
Robus, плиз, перестань разговаривать с каким-то воображаемым человеком, при этом ещё и ругаясь с ним.
мы то не в курсе с кем ты говоришь. а читаем именно мы а не он :)
но!
LD A,32,(DE),A:INC E:DJNZ $-2 === IzcOrD788LMOaLcSDNUvWuYBk0otWm!ya3
а это — кусок кода из wild player, подпрограмма PRLIN
т.е. нужно дополнительное и немалое усилие что-бы прочитать что здесь, особенно если весь стиль — такой.
другими словами — такой код нужно сразу приводить к стандартным мненоникам, а потом только разбираться и тестить и ИСКАТЬ ГДЕ НЕ ВЕРНО СКОНВЕРТИЛ К СТАНДАРТНЫМ МНЕМОНИКАМ z80!
нахер эти головоломки дополнительные?
с другой стороны —
ld hl,#4000: ld de,#4001: ld bc,6911: ld (hl),l: ldir гораздо легче воспринимается.
благодаря тому что ЕСТЬ КОМАНДЫ, А НЕ какая-то МЕТАКОМАНДА LD, и они отделены пробелами и двоеточием.
если учесть что для некоторых асмов нужно писать XOR A,A а для других эта же запись на выходе выглядит как XOR A: XOR A, то дополнительно себе устраивать дебаг ещё и по этому поводу я вообще не пойму.
В общем — любой дебаггер выводит по команде в строку, не смешивая. это показывает как код выполняется процессором.
и поэтому, это — нормальная запись.
Мне думается так: пиши для себя что угодно, но если писать статью здесь или в журналах, то лучше отойти от sjasm/STORM синтаксиса и потрудиться написать комментарии.
С похожим я тоже столкнулся, когда выложил сырки под Enterprise128 — пользователь написал, что непонятно и неясно, каким ассемблером пользоваться. тем же исходником я тоже столкнулся и долго вспоминал, что было написано год назад.
Илья, если честно, то не понимаю. Как не понимаю проблемы «как понять свой код» вообще, в принципе. Как можно не понять свой код спустя хоть сколько угодно лет, и уж тем более — как в этом может помочь написание в столбик? Если ты не можешь разобраться в своем собственном коде — ты определенно что-то делаешь неправильно, и код в строку тут ни про чем. И можете считать меня эгоистом, но меня в самую последнюю очередь заботит то, чтобы кто-то разбирался в моем коде.
Ты ведь понимаешь, что речь тут шла не о том, как правильно\неправильно писать, а о том, как писать так, чтобы через месяц-год-десятилетие с лёгкостью прочитать свой код (а в идеале и чужой) и понять его.
Я все понимаю, кроме одного: почему я по вашему мнению не имею права писать так, как мне удобно и как мне хочется? Откуда иакая уверенность в своем методе, как в единственно правильном?
Не у нас с тобой разный «дзен», а у меня с вообще всеми взятыми. Как раз твой «дзен» очень схож с Вовиным, у вас лишь полюса разные, а представление очень схоже. Именно поэтому вы каждый пишете статьи и каждый общаетесь друг с другом, спорите ссоритесь обсуждаете, обожаете и ненавидите. Я не пишу не потому что не хочу, а потому что понимаю, что это выстрел в небо из рогатки с надеждой познакомиться с иными цивилизациями. И не потому, что никто не поймёт, а потому, что всё что я делаю, до мелочей взбесит каждого без исключения. Я до невероятности выбешиваю людей своим подходом. Ты не представляешь как я издевался над людьми на собеседованиях, особенно на тех, где предлагают тестовые задания делать. Я от них не отказываюсь чисто из спортивного интереса поиздеваться. Я за последние 8 лет привык на собеседования ходить с бутылкой «виски», они очень любят спорить на «виски», крутые программеры-перцы пьют только виски. Прости это статистика. Так что, поверь, я просто ни о чём не спорю вообще. И что бы не раздражать никого я привык молчать. Вообще не понимаю чего я влез в эту дискуссию?
В одном из гарнизонов, где служил мой отец, один полковник развёлся с женой из-за того, что она отказывалась ставить зубные щётки в ванной щетиной в одну сторону.
А для чего я постоянно пищу фразу «слово мудак я использую только по отношению к тому, кто его написал»? Ты же мне не предлагал научиться читать и быть мудкаом, лишь потому что я не пишу в строку? Но только один человек это затронул, я и начал так себя вести, но только по отношению к одному конкретному человеку.
я отлично запомнил метку для подпрограммы у Коши:
GROB
что делает эта процедура? ;)
Деня, твой звин сильно расхолаживает.
Есть большой смысл ставить метки в начале строки — так ты визуально отделяешь начало подпрограммы от кода:
«notGameOver», деня! а не " notGameOver"
почему? потому что другие асмы воспринимают эту метку иначе.
отсюда же:
минимум — пробел в начале строки перед кодом, и никаких пробелов для меток, переменных.
В общем, все две твои игры которые я портировал, начинались с того что я приводил текст в нормальный вид, я, блин, ФОРМАТИРОВАЛ КОД с начала.
зачем? да он не компилируется!
и да, я пользуюсь двумя-тремя табами перед каждой строкой кода :)
мы то не в курсе с кем ты говоришь. а читаем именно мы а не он :)
но!
LD A,32,(DE),A:INC E:DJNZ $-2 === IzcOrD788LMOaLcSDNUvWuYBk0otWm!ya3
а это — кусок кода из wild player, подпрограмма PRLIN
т.е. нужно дополнительное и немалое усилие что-бы прочитать что здесь, особенно если весь стиль — такой.
другими словами — такой код нужно сразу приводить к стандартным мненоникам, а потом только разбираться и тестить и ИСКАТЬ ГДЕ НЕ ВЕРНО СКОНВЕРТИЛ К СТАНДАРТНЫМ МНЕМОНИКАМ z80!
нахер эти головоломки дополнительные?
с другой стороны —
ld hl,#4000: ld de,#4001: ld bc,6911: ld (hl),l: ldir гораздо легче воспринимается.
благодаря тому что ЕСТЬ КОМАНДЫ, А НЕ какая-то МЕТАКОМАНДА LD, и они отделены пробелами и двоеточием.
если учесть что для некоторых асмов нужно писать XOR A,A а для других эта же запись на выходе выглядит как XOR A: XOR A, то дополнительно себе устраивать дебаг ещё и по этому поводу я вообще не пойму.
В общем — любой дебаггер выводит по команде в строку, не смешивая. это показывает как код выполняется процессором.
и поэтому, это — нормальная запись.
С похожим я тоже столкнулся, когда выложил сырки под Enterprise128 — пользователь написал, что непонятно и неясно, каким ассемблером пользоваться. тем же исходником я тоже столкнулся и долго вспоминал, что было написано год назад.
особенно — в интрах, когда начинается оптимизация — там такая жесть по перетасовке всего и вся начинается…
откладывать в долгий ящик вики
haters gonna hate
А теперь пошли спать!