• avatar Raider
  • 0
Забыл еще написать (но думал об этом), что когда мы увидим дизассемблер, то команды идущие подряд в строке будут развернуты.
А когда кто-то напишет нормальный IDE — как ставить брейкопинты и степать прям по коду?
Есть много теорий по этому поводу. Например, есть такая теория, что любой конечный кусок кода должен более-менее помещаться в экран, без скроллингов и т.п. Опять же, любая техника быстрого чтения как раз о том, чтобы не бегать глазами по строкам, а видеть целиком.

Я думаю, что большинство таких рассуждений — чисто размышлизмы. Но на практике, запись в столбик придумывали на экранах 30-40 символов в ширину. Не знаю насчёт тебя, а я сижу сейчас напротив экрана, который даёт мне в терминале 210 символов в ширину. Ты всерьёз думаешь, что сможешь убедить меня потратить 3/4 этого пространства на пустое место?
  • avatar Raider
  • 1
VBI мне импонирует тем что у него упрощенный и правильный взгляд на мир. Все должно быть устроено просто.
Нет, ну в самом деле, конструкция
ololo 
 equ $+1
ld hl,0

вызывает кратковременное преткновение ума, необходимо пусть хоть и кратковременно, но все же понять что означает эта метка, вычислить ее значение в уме. Вместо equ $+1 для других команд там должно быть equ $+2 и даже equ $+3, а это уже error-prone.

Это основное.
Такжке для логической аргументации можно упомянуть нарушение принципа verbosity в командах которые используют эту метку.
ld (label+1),reg мне явно показывает что это само-модифицирующийся код, тогда как ld (label),reg такого не показывает, скрывает это от меня.
  • avatar Raider
  • 4
Вообще, это мой интерес.
Вопрос — как писать, сверху-вниз или слева-направо напрямую относится к психологии восприятия человеком, к работе ума. Тут не все так просто, не только вопрос удобства.

Логическая аргументация такова:
Ход вычислений — сверху вниз. И когда мы располагаем их слева-направо, это осложняет нам восприятие хода вычислений, так как приходится постоянно «переключаться» от сверху-вниз к слева-направо. Это может быть аргументированно там где требуется и общепринято, например при вычислении выражений, но если особой ДОСТАТОЧНОЙ на то необходимости не имеется, лучше этого избегать.

Это «удобно» до той поры, когда ты «в теме», пока тебе заранее известно что происходит в данном фрагменте текста программы. Но как только ты утеряешь это представление, и тебе надлежит РАЗБИРАТЬСЯ (вот в чем разница), подобная запись немного, но осложняет восприятие. Является маленьким препятствием, местом преткновения.
Вплоть до того что я иногда на автомате enter'ом возвращаю сложные строки обратно к представлению в столбец.

Ну и последняя аргументация. Если бежать и создавать к каждой строке комментарии отдельным столбцом, то подобные строки слишком широки и не дают нормально написать комментарии. К тому же, если будет столбец сплошных строк-комментариев, он «маскирует» такую длинную строку.

Так что… любой «выверт» имеет свою цену… :)
согласен, но способ запуска cp/m еще тот. Меня интересовал путный ассемблер и отладчик.
Ты неправ, интересного там очень много, но слишком всё самобытно сделано…
  • avatar VBI
  • 0
9 авторов всего
  • avatar VBI
  • 1
shinilb0g Вы Мастер Загадок!
ты моего кода не видел(:


;-----------------output sprite
outspr:
 ld (backsp+1),sp
 ld sp,hl

n=0
 dup 4

 dup 8
 ld de,(sq+n),bc,(sq+2+n)

 dup 2
 dup 8
 push bc,de
edup

 ld hl,0-16*6
 add hl,sp
 ld sp,hl

edup

n=n+4
edup
;-------------------8 линий дубль 2
 ld hl,$7E0
 add hl,sp
 ld sp,hl

edup


backsp:ld sp,0
 ret
  • avatar VBI
  • 0
добавлю ещё такую фишку, подсмотренную в коде у Грачёва — переменные компилятора:

x=#e0
	dup 16
		_poke sinpage_start+2,x
x=x+1
	edup
  • avatar VBI
  • 1
kowalski, Следите за нашим журналом!
В следующем выпуске!
Только у нас!
Всего неделя!
По одной в руки!
  • avatar VBI
  • 1
кстати-кстати. сложные места лучше описать в каменте — что именно делается.
это популярно скорее всего на комодоре. Видел я подобный код распаковки LZ4. пришлось просить помощи разработчика, код просто собирался неправильно.

Кстати, еще одно правило: не пишите бгомерзкий код на Alasm.
  • avatar Shiru
  • 1
Интересная фишка, реализованная во многих ассемблерах для 6502 — безымянные метки. То есть просто :, а переходить к ним можно по :- или :+. Если надо через одну-две-три — можно менять количество минусов и плюсов. Это очень удобная альтернатива нашим привычным $+N для коротких прыжков типа обхода одной-двух команд, позволяет легко вставлять команды и не думать об их размере. Почему-то в ассемблерах для Z80 я подобную возможность не встречал.
интрига-интрига: дядя Леша против дядьки Леши: кто кого?
-for whom how
— MGIMO fininshed?
= ask!
high или [ есть не во всех ассемблерах.
в курсе. мало интересного там.