Там дальше был просто ад и израиль. Использовался soft float. При этом промежуточные константы были в интах, поэтому поплыли результаты. В итоге вполне годную в теории математику подгоняли мейджиками тупо по диапазону значений.
Дальше веселее - из-за soft float, вероятно, заканчивалась память. И автор перешел на ассемблер вообще без понятия о процедурах - одна точка входа и порядка 50 кб кода с метками исключительно вида "jjjj1a". Думаю, проще в бинарном коде разобраться, чем в этом высере. При этом с его талантами мне крайне сомнительно, что он смог родить код эффективнее компилятора. Зато читабельность упала до нуля.
И да, _все_ переменные - исключительно глобальные. Ну, ладно, допустим, по каким-то причинам автор не захотел использовать стек. Но можно ведь было хотя-бы их огородить между модулями статическим определением.
В общем, обычный продакшн код среднестатистической железки российского производства.
a может, товарищ пытается обнулить в P4OUT все биты, кроме обнуленных в R_B и R_G? при значениях (констант? макросов?) R_B и R_G с одним единственным сброшенным битом (остальные установлены) код предсказуем на 100% при условии, что R_B и R_G не равны друг другу
Вот кстати да. Скорее всего каждый бит байта в порту P4OUT означает один триггер. А следовательно они точно не равны друг другу, и если они реверсные у них точно сброшен один бит.
Но в таком случае коммент должен быть "сбросить всё кроме триггеров". Кроме того я спрашивал топикстартера о задаче, он подтвердил что задача именно сбросить битики из этих констант.
Это в любом случае WTF, потому что выглядит как WTF. Даже в описанном вами случае -- что мешало побитовое "или" использовать, чтобы у следующего программиста инфаркта не было?
Ну тоесть P4OUT & (~R_B) & (~R_G) ?
Reply
Лулз в том, что биты этого порта управляют силовой периферией. К счастью, гасится лишь динамик.
Reply
Все же мне странно предположить что человек не понимал двоинчную арифметику до степени 'совсем'.
Как же он остальное написал?
Reply
Дальше веселее - из-за soft float, вероятно, заканчивалась память. И автор перешел на ассемблер вообще без понятия о процедурах - одна точка входа и порядка 50 кб кода с метками исключительно вида "jjjj1a". Думаю, проще в бинарном коде разобраться, чем в этом высере. При этом с его талантами мне крайне сомнительно, что он смог родить код эффективнее компилятора. Зато читабельность упала до нуля.
И да, _все_ переменные - исключительно глобальные. Ну, ладно, допустим, по каким-то причинам автор не захотел использовать стек. Но можно ведь было хотя-бы их огородить между модулями статическим определением.
В общем, обычный продакшн код среднестатистической железки российского производства.
Reply
Reply
Reply
Reply
Reply
Reply
Reply
А мысли про define были отвергнуты с ремаркой "да ну, ради одного случая".
Хотя конечно это не выглядит правдой.
Reply
А следовательно они точно не равны друг другу, и если они реверсные у них точно сброшен один бит.
Но в таком случае коммент должен быть "сбросить всё кроме триггеров".
Кроме того я спрашивал топикстартера о задаче, он подтвердил что задача именно сбросить битики из этих констант.
Reply
Reply
Leave a comment