Цитата(vet @ Jun 9 2008, 13:47)

Есть у хороших исходников такое свойство - самодокументируемость.
давайте разберём этот хороший исходник:
Код
; Clear WDRF in MCUSR
in r16, MCUSR
andi r16, (0xff & (0<<WDRF))
out MCUSR, r16
первой инструкцией ЧИТАЕМ регистр MCUSR
затем только что прочитанное значение затираем нулём
и выводим обратно в порт.
Мне одному кажется, что первая операция лишняя?
тогда вот не менее самодокументированный код:
Код
clr r16
out MCUSR, r16
Может быть изначально подразумевалось вот так:
Код
; Clear WDRF in MCUSR
in r16, MCUSR
andi r16, (0xff & ~(1<<WDRF))
out MCUSR, r16
я понимаю, когда для читаемости кода используют (1<<bit3)|(0<<bit2)|(1<<bit1)|(0<<bit0), но когда (0<<N) используется как единственный результат? в чём смысл?
Сообщение отредактировал ae_ - Jun 9 2008, 08:58