@ru_arduino

Страница 2413 из 7737
Dolphin
05.06.2017
08:25:44
старший бит видишь? )

LexsZero
05.06.2017
08:25:51
C11(ISO/IEC 9899:201x) §6.5.8 Relational operators Each of the operators < (less than), > (greater than), <= (less than or equal to), and >= (greater than or equal to) shall yield 1 if the specified relation is true and 0 if it is false.107) The result has type int.

Danil
05.06.2017
08:26:43
RxD константа что-ли? просто бит 3 захаркоден

Google
Dolphin
05.06.2017
08:26:55
константа

Danil
05.06.2017
08:27:08
там все сравнения выкинуты компилером нахуй в асме

Dolphin
05.06.2017
08:27:12
но может меняться при перекомпиляции и конфиге

Danil
05.06.2017
08:27:21
ну еп а смысл тогда?

Dolphin
05.06.2017
08:27:22
как же выкинуты

первая строчка

SBIC

это сравнение

Danil
05.06.2017
08:27:54
а сделай RxD переменной и скомпиль

Dolphin
05.06.2017
08:28:00
пропустить команду если пин порта очищен

Danil
05.06.2017
08:28:09
я в курсе

просто там сразу написано '3'

Dr
05.06.2017
08:28:51
Received_data|=((PINB&(1«RxD))>0)«7;
а не проще для читабельности >0 заменить на очевидный &0x01

Google
Danil
05.06.2017
08:29:14
а если RxD переменная?

Dr
05.06.2017
08:29:41
а, всё

я догнал

Dolphin
05.06.2017
08:30:14
только я не понимаю нахуя переменная? ))

Dr
05.06.2017
08:30:33
Received_data|=((PINB&(1«RxD))»RxD)«7;

Danil
05.06.2017
08:30:42
я бы написал иначе, не доверяю я такие моменты компилятору

Dr
05.06.2017
08:30:50
да, так ещё менее читабельно

Dolphin
05.06.2017
08:30:53
я бы написал иначе, не доверяю я такие моменты компилятору
_PWM += ( ((_PWM <= _tails_PWM)++) && (_flags & _tails) ) - ( !(_flags & _break || (_PWM < _tails_PWM)) << 1 );

Danil
05.06.2017
08:31:51
фарш какой-то

Dolphin
05.06.2017
08:32:29
_PWM &= 0xFF + !((_flags&_tails) && (_PWM > 0));

:)

я такое в 12 лет писал уже )

Danil
05.06.2017
08:33:12
(PINB&(1<<RxD)? 0x80; 0x00)

вот так например

Dr
05.06.2017
08:33:58
(PINB&(1<<RxD)? 0x80; 0x00)
имхо с условием займет больше места, мы же за байты боремся

Google
Dolphin
05.06.2017
08:33:59
вот так например
в то же самое скомпилится, но там логика усложнится потом чутка

Danil
05.06.2017
08:34:23
пруфы в студию

Danil
05.06.2017
08:36:16
нет хотя бы 16 битного регистра под сдвиг

Dolphin
05.06.2017
08:36:16
константа

Danil
05.06.2017
08:36:39
зато читабельнее

Dolphin
05.06.2017
08:36:45
:)

мне нет )

Danil
05.06.2017
08:37:57
на пару байт таки мой вариант короче для переменной

Dolphin
05.06.2017
08:38:49
толку то? ))

переменная нинужна

Danil
05.06.2017
08:39:28
ну вот кому как, но мой вариант читается сразу, а ваш я вкурил с 3ей попытки. Не надо так

Dolphin
05.06.2017
08:40:32
ну вот кому как, но мой вариант читается сразу, а ваш я вкурил с 3ей попытки. Не надо так
а не надо курить мой код, я если в массы толкаю, то комментирую во-первых, а во-вторых - 100% покрытие тестов готовлю и профилирование

IDDQD
05.06.2017
08:40:50
теперь у меня вопрос

почему |=

а, здравствуйте господа. давно не виделись

Google
Danil
05.06.2017
08:41:58
кстати в случае с константой в Received_data (R24) пишется напрямую 0х00 или 0х80 - а в коде стоит |=!?

Dolphin
05.06.2017
08:41:59
почему |=
Потому что к результату битово прибавляю старший бит

Danil
05.06.2017
08:42:18
Для переменной все корректно. Заоптимизировало нах

Dolphin
05.06.2017
08:42:39
Для переменной все корректно. Заоптимизировало нах
000000C5 LDS R25,0x0073 Load direct from data space 000000C7 OR R24,R25 Logical OR

Danil
05.06.2017
08:43:08
в листинге выше этого небыло

потому и спросил

Dolphin
05.06.2017
08:43:22
ну это же и так понятно, компилятор не идиот )

тупо - робот :D

IDDQD
05.06.2017
08:43:39
Потому что к результату битово прибавляю старший бит
тогда нужно следить за тем что бы этот бит обнулялся до этой строки

Dolphin
05.06.2017
08:44:06
тогда нужно следить за тем что бы этот бит обнулялся до этой строки
там перед этим сдвиг результата на 1 бит вправо

Admin
ERROR: S client not available

Dolphin
05.06.2017
08:44:42
Received_data=(Received_data»1) | ((PINB&(1«RxD))>0)«7;

вот так выглядит полностью

IDDQD
05.06.2017
08:45:26
базара нет

Danil
05.06.2017
08:45:30
*вот тут место для стикера #кровьизглаз

не дай бог такой код потом поддерживать

Dolphin
05.06.2017
08:46:15
не дай бог такой код потом поддерживать
да че тебя смущает то? )) все же читабельно вполне

IDDQD
05.06.2017
08:46:40
да. я щас максимально просто пишу. ибо моя заумная писанина пятилетней давности меня раздражает блять

хотя если коменты писать - то норм

Google
Dolphin
05.06.2017
08:47:14
а самое главное, это поддается оптимизации дискреткой

типа полиномы жегалкина и тп

Danil
05.06.2017
08:48:13
вот ты место наверное сэкономил на экране дохуя? нормально, это когда код читается сразу без промежуточных вычислений в голове. компилер все равно сделает одинаковый машкод

Danil
05.06.2017
08:49:19
а такой код потом исправь легко по всему файлу - в такой каше искать баг будешь 3 дня

Dolphin
05.06.2017
08:49:23
этот пример не красочный да

я выше показывал другие

но этот будет сложнее потом

я тесты прогоняю до изменений

Danil
05.06.2017
08:50:31
если не лениться и писать вообще с if'ами, то код машкод будет тот же, а поддерживать и отлаживать будет проще на порядки

Dolphin
05.06.2017
08:50:47
_PWM += ( ((_PWM <= _tails_PWM)++) && (_flags & _tails) ) - ( !(_flags & _break || (_PWM < _tails_PWM)) << 1 );

вот это

было 6 условий

Danil
05.06.2017
08:51:06
например п в чём?

Dolphin
05.06.2017
08:51:23
код был больше на 80 байт

Danil
05.06.2017
08:52:02
_PWM += ( ((_PWM <= _tails_PWM)++) && (_flags & _tails) ) - ( !(_flags & _break || (_PWM < _tails_PWM)) << 1 );
здесь нет ветвлений вообще - простая арифметика

Dolphin
05.06.2017
08:52:02
сработали законы поглощения

всмысле?

условия не видишь?

Danil
05.06.2017
08:52:36
где?

Страница 2413 из 7737