Забыл еще написать (но думал об этом), что когда мы увидим дизассемблер, то команды идущие подряд в строке будут развернуты.
А когда кто-то напишет нормальный IDE — как ставить брейкопинты и степать прям по коду?
Есть много теорий по этому поводу. Например, есть такая теория, что любой конечный кусок кода должен более-менее помещаться в экран, без скроллингов и т.п. Опять же, любая техника быстрого чтения как раз о том, чтобы не бегать глазами по строкам, а видеть целиком.
Я думаю, что большинство таких рассуждений — чисто размышлизмы. Но на практике, запись в столбик придумывали на экранах 30-40 символов в ширину. Не знаю насчёт тебя, а я сижу сейчас напротив экрана, который даёт мне в терминале 210 символов в ширину. Ты всерьёз думаешь, что сможешь убедить меня потратить 3/4 этого пространства на пустое место?
VBI мне импонирует тем что у него упрощенный и правильный взгляд на мир. Все должно быть устроено просто.
Нет, ну в самом деле, конструкция
ololo
equ $+1
ld hl,0
вызывает кратковременное преткновение ума, необходимо пусть хоть и кратковременно, но все же понять что означает эта метка, вычислить ее значение в уме. Вместо equ $+1 для других команд там должно быть equ $+2 и даже equ $+3, а это уже error-prone.
Это основное.
Такжке для логической аргументации можно упомянуть нарушение принципа verbosity в командах которые используют эту метку.
ld (label+1),reg мне явно показывает что это само-модифицирующийся код, тогда как ld (label),reg такого не показывает, скрывает это от меня.
Вообще, это мой интерес.
Вопрос — как писать, сверху-вниз или слева-направо напрямую относится к психологии восприятия человеком, к работе ума. Тут не все так просто, не только вопрос удобства.
Логическая аргументация такова:
Ход вычислений — сверху вниз. И когда мы располагаем их слева-направо, это осложняет нам восприятие хода вычислений, так как приходится постоянно «переключаться» от сверху-вниз к слева-направо. Это может быть аргументированно там где требуется и общепринято, например при вычислении выражений, но если особой ДОСТАТОЧНОЙ на то необходимости не имеется, лучше этого избегать.
Это «удобно» до той поры, когда ты «в теме», пока тебе заранее известно что происходит в данном фрагменте текста программы. Но как только ты утеряешь это представление, и тебе надлежит РАЗБИРАТЬСЯ (вот в чем разница), подобная запись немного, но осложняет восприятие. Является маленьким препятствием, местом преткновения.
Вплоть до того что я иногда на автомате enter'ом возвращаю сложные строки обратно к представлению в столбец.
Ну и последняя аргументация. Если бежать и создавать к каждой строке комментарии отдельным столбцом, то подобные строки слишком широки и не дают нормально написать комментарии. К тому же, если будет столбец сплошных строк-комментариев, он «маскирует» такую длинную строку.
Интересная фишка, реализованная во многих ассемблерах для 6502 — безымянные метки. То есть просто :, а переходить к ним можно по :- или :+. Если надо через одну-две-три — можно менять количество минусов и плюсов. Это очень удобная альтернатива нашим привычным $+N для коротких прыжков типа обхода одной-двух команд, позволяет легко вставлять команды и не думать об их размере. Почему-то в ассемблерах для Z80 я подобную возможность не встречал.
А когда кто-то напишет нормальный IDE — как ставить брейкопинты и степать прям по коду?
Я думаю, что большинство таких рассуждений — чисто размышлизмы. Но на практике, запись в столбик придумывали на экранах 30-40 символов в ширину. Не знаю насчёт тебя, а я сижу сейчас напротив экрана, который даёт мне в терминале 210 символов в ширину. Ты всерьёз думаешь, что сможешь убедить меня потратить 3/4 этого пространства на пустое место?
Нет, ну в самом деле, конструкция
вызывает кратковременное преткновение ума, необходимо пусть хоть и кратковременно, но все же понять что означает эта метка, вычислить ее значение в уме. Вместо equ $+1 для других команд там должно быть equ $+2 и даже equ $+3, а это уже error-prone.
Это основное.
Такжке для логической аргументации можно упомянуть нарушение принципа verbosity в командах которые используют эту метку.
ld (label+1),reg мне явно показывает что это само-модифицирующийся код, тогда как ld (label),reg такого не показывает, скрывает это от меня.
Вопрос — как писать, сверху-вниз или слева-направо напрямую относится к психологии восприятия человеком, к работе ума. Тут не все так просто, не только вопрос удобства.
Логическая аргументация такова:
Ход вычислений — сверху вниз. И когда мы располагаем их слева-направо, это осложняет нам восприятие хода вычислений, так как приходится постоянно «переключаться» от сверху-вниз к слева-направо. Это может быть аргументированно там где требуется и общепринято, например при вычислении выражений, но если особой ДОСТАТОЧНОЙ на то необходимости не имеется, лучше этого избегать.
Это «удобно» до той поры, когда ты «в теме», пока тебе заранее известно что происходит в данном фрагменте текста программы. Но как только ты утеряешь это представление, и тебе надлежит РАЗБИРАТЬСЯ (вот в чем разница), подобная запись немного, но осложняет восприятие. Является маленьким препятствием, местом преткновения.
Вплоть до того что я иногда на автомате enter'ом возвращаю сложные строки обратно к представлению в столбец.
Ну и последняя аргументация. Если бежать и создавать к каждой строке комментарии отдельным столбцом, то подобные строки слишком широки и не дают нормально написать комментарии. К тому же, если будет столбец сплошных строк-комментариев, он «маскирует» такую длинную строку.
Так что… любой «выверт» имеет свою цену… :)
В следующем выпуске!
Только у нас!
Всего неделя!
По одной в руки!
Кстати, еще одно правило: не пишите бгомерзкий код на Alasm.
«Let's Start Publishing Usable Assembly Language Code»
— MGIMO fininshed?
= ask!