Байты данных, которые подтверждают ранее установленные состояния (вне зависимости от их числовых значений)



Скачать 150.7 Kb.
Дата25.08.2013
Размер150.7 Kb.
ТипДокументы

2-1/8. "Учебно-тренировочная" оптимизация кодов сценариев №№ 1 ("УПАСТЬ…) и 2 ("ОТЖАТЬСЯ…"), с "упором" на обеспечение максимальной скорости их отработки (или "сколачивание коллектива").



Вопрос: "Что востребовано по логике здравого смысла"?

Ответ: то, что связано с основной "массой жизни".

Пояснение: неделя жизни это сущая ерунда по сравнению с остальной ее продолжительностью, но и неделю жизни сбрасывать со счетов нельзя, так как за это короткое время можно основательно поднабраться ума-разума, после чего можно не опасаться "бяк", связанных с реализацией всем известной концепции типа "жизнь нужно прожить так, чтобы не было мучительно больно за бесцельно прожитые годы".

А никто и не сбрасывает.

Поэтому, в настоящее время, русские колобки представляют собой умудренные опытом, хитрющие и коварные организмы, которые, с упорством маньяка, целенаправленно катятся в сторону компромиссной оптимизации кодов сценариев №№1 и 2.

Вопрос: "Чем это отличается от того, что было проделано ранее"?

Ответ: по сути, практически ничем. Только числовыми значениями байтов данных, которые нужно обойти.

Вопрос: "Что конкретно нужно обойти"?

Ответ: если особо не вдаваться в специфику, то нужно обойти

- байты данных, которые подтверждают ранее установленные состояния

(вне зависимости от их числовых значений),

- и байты данных фиксированных элементов картинки, которые "убивать" (записью

"по верху") нельзя.

Вопрос: "От чего и куда плясать"?

Ответ: от кода картинки 1-го "кадра", в сторону дальнейшего развития событий.

В смысле, "куда кривая (логика) выведет".

Компромиссная оптимизация кода картинки 1-го "кадра" была произведена ранее.

В целях обеспечения максимальной концентрации внимания на предмете разговора и уменьшения длины "программной портянки", в данном случае, я не буду компромиссно оптимизировать код картинки 1-го "кадра".

Но можно и "заоптимизировать". Нет проблем. Нужно только, в "предмете пытки", заменить соответствующие "незаоптимизированные куски" программы на "заоптимизированные" (см. предыдущий подраздел), не забыв, после этого, с целью "жизнеутверждающего убийства возможных прыжковых бяк", "прощелкать" все сообщения Message[306].

В условиях наличия 3-х достаточно "крутых сюжетов" (а может быть и больше, и они могут быть еще "круче"), дальнейшая работа должна производиться не абы как, а по определенной методике.

Если "все свалить в одну общую кучу" и пытаться ее "ковырять", то в большинстве случаев, ничего кроме "геморроя" не получится.

Хотя, "гигантам мысли" это не грозит.


А так как достаточно велика вероятность того, что среди нас, таковых не много (пояснение: я не причисляю себя к "гигантам мысли"), то есть немалый смысл в использовании спасительного принципа "разделяй и властвуй".

Любая методика, построенная по принципу "разделяй и властвуй", есть некий "набор" последовательных "шагов" (этапов работы).

Цель работы - составление "чистовиков карт обходов" 1-го и 2-го сценариев.

В данном случае, дальнейшую работу выгодно "раздробить" на следующие этапы:


1. По результату сравнения кодов 1-го "кадра" и 1-го сценария,

составляется "черновик карты обходов" 1-го сценария.

2. По результату сравнения "черновика карты обходов" 1-го сценария и кода

2-го сценария, составляется "чистовик карты обходов" 1-го сценария.

3. По результату сравнения "чистовика карты обходов" 1-го сценария и кода

2-го сценария, составляется "чистовик карты обходов" 2-го сценария.

4. Составление сводного "чистовика карты обходов" 1-го и 2-го сценариев.

1. Составление "черновика карты обходов" 1-го сценария.
По большому счету, речь идет о решении достаточно тривиальной задачи: код страницы 1-го "кадра" побайтно сравнивается с кодом той же страницы 1-го сценария.

Сравниваются те числовые значения байтов, которые имеют одинаковые адреса.

Если числовые значения пары сравниваемых байтов различны, то делается вывод о том, что соответствующий байт кода 1-го сценария на индикацию вывести нужно ("друг").

Если числовые значения сравниваемых байтов одинаковы, то их нужно как-то пометить (потенциальный "враг", и не более того!).

Я применил выделение ярко-желтым цветом, но можно и по-другому.

Короче, всех "подозреваемых" нужно "доставить в прокуратуру" для последующего разбирательства.

При этом следует учесть то, что речь идет именно о "подозреваемых", вина которых еще не доказана (презумпция невиновности - превыше всего!).

Не исключено, что перед некоторыми "подозреваемыми" придется извиняться и конфетку им давать (какая-никакая, а компенсация за моральный ущерб).

Вывод: хлеб работников прокуратуры тяжек.

Но он - с маслом и икоркой. Можно и потерпеть.

По поводу числовых значений "подозреваемых": они могут быть любыми (естественно, что в пределах байта). Важно только их числовое совпадение.

Начинаю с 1-го кристалла:





Как видите, совпадают только байты с нулевыми значениями, но это вовсе не свидетельствует о том, что совпадений байтов с другими числовыми значениями не может быть.

Они вполне могут быть, но только не в данном случае.

Объяснение этому очень простое: нерациональное "ваяние" элементов картинок (прискорбно сообщаю, что это делалось "от балды").

Из этого следует практический вывод: если "ваять" элементы картинок с "дальним прицелом" на максимальную эффективность последующей, компромиссной оптимизации, то "ваять" их нужно так, чтобы в том, что будет записываться "по верху", имело место быть как можно большее количество побайтных подтверждений ранее установленных состояний.

В случае, если "обходных" массивов будет не много, но они будут "упитанными" ("жирными"), будет наблюдаться "компромисснооптимизированное счастье".

Но если буквально следовать такой прямолинейной логике, то можно вообще прийти к "маразму" типа "в 1-м кадре - все нули, а в следующем сценарии, на индикацию выводится один байт".

На кой ляд и эти нули, и это однобайтное убожество нужны?

Курам на смех.

Банальный вывод: любая крайность вредна. Истина находится где-то посередине.

Еще один вывод (философский): не все так просто в этой бренной жизни.

Компромисс это не "хухры-мухры", а "продукт жизнедеятельности качественного, да к тому же еще и ХОЗЯЙСКОГО, мозга".

Максимальная выгода (в соответствии с данностью) это как раз и есть тот самый "продукт".

Причем, с учетом "жизненной теории относительности".

К примеру, "консенсус" между Васей и Петей вовсе не означает "консенсуса" между Петей и Иваном.

Чтобы Петя был в "консенсусе" и с Васей, и с Иваном, Петя должен, например, учесть, что Вася любит кошек, а Иван их терпеть не может (и т.д., и т.п.)

При работе с графическими модулями (и вообще со всем тем, что обладает оперативной памятью), это ощущается с особой и убедительной силой.

Вернусь к своим "котлетам".

Итак, на первый взгляд, все просто до безобразия: при работе с 1-м кристаллом, в части касающейся компромиссной оптимизации кода картинки 1-го сценария ("УПАСТЬ…"), нужно просто обойти все массивы "нулевых" байтов, которые,

на рис. 1 и 2, выделены ярко-желтым цветом.

"Спасать от уничтожения" ничего не нужно.

Обращаю Ваше внимание на то, что этот вывод не является окончательным.

Вопрос: "Почему"?

Ответ: потому, что кроме 1-го сценария, существует и 2-й, и во 2-м сценарии, в секторах, выделенных ярко-желтым цветом, на индикацию могут выводиться байты, с числовыми значениями отличными от тех, которые обходятся в 1-м сценарии.

Если, при компромиссной оптимизации картинки 1-го сценария, эти байты бездумно обойти, то в картинке 1-го сценария (после смены картинки 2-го сценария на картинку 1-го сценария) будут присутствовать "совершенно безобразные и отвратительные кракозябры", представляющие собой "обрывки" кодов картинки 2-го сценария (напоминаю про оперативную память графического модуля).

Это как раз тот пренеприятнейший, но наисправедливейший случай, когда перед "подозреваемыми" нужно извиниться и отпустить их на все 4 стороны (и еще "в щечку поцеловать", чтобы не возмущались).

Пускай "функциклируют" на благо общего дела, а иначе, хлопот не оберешься.

Вывод: не все так просто в "Датском королевстве".

Имеют место быть достаточно сложные взаимоотношения между Петей, Васей и Иваном.

А что есть Петя, Вася и Иван?

Это есть коллектив.

И если взаимоотношения членов коллектива не будут урегулированы, то будет не коллектив, решающий общую задачу, а одно недоразумение.

Ладно. Посмотрим, что из этого получится.

А пока перехожу на 2-й кристалл.

Здесь уже сложнее, так как и боеголовку, в "комплекте" с нижней половиной солнца, нужно обойти, и динамические элементы картинки имеют место быть.

Сначала сравниваю вторые страницы 1-го "кадра" и 1-го сценария.


"Желтизны" предостаточно.

Красными рамками выделены все, имеющиеся в наличии, "птички".

Ярко-желтым цветом выделены повторяющиеся байты.

Светло-желтым цветом выделен массив байтов, который "убивать" нельзя (нижняя половина солнца) и который однозначно нужно обойти.
Теперь перехожу на третьи страницы 1-го "кадра" и 1-го сценария.

Выделения - те же самые, только "птичек" не три, а две, и от "уничтожения спасается" боеголовка.

Обратите внимание на то, что выделено красной рамкой, но не выделено ярко-желтым цветом.

Этот частичный, числовой "разнобой" объясняется наличием стрелки, которая, в картинке 1-го "кадра", указывает на левую "птичку".

А в 1-м сценарии, ее нет ("убийство" стрелки записью нулей "по ее верху").

Вот и получается числовой "разнобой".

Теперь можно составить "черновик карты обходов" 1-го сценария.

Для удобства, я наложил картинку 1-го сценария на картинку 1-го "кадра" (в части касающейся вторых и третьих страниц графического модуля).

Получилось сие "творение":


А это и есть "черновик карты обходов" 1-го сценария:



Ярко-желтым цветом выделены "подозреваемые".

В том числе и те, перед которыми, далее, придется извиняться.

2. Составление "чистовика карты обходов" 1-го сценария
Теперь нужно "сваять "чистовик карты обходов" 1-го сценария.

"Чистовик карты обходов" 1-го сценария есть "продукт любви" ("карапуз") между "черновиком карты обходов" 1-го сценария и кодом картинки 2-го сценария, в части касающейся тех массивов байтов, которые, на рис. 6, выделены ярко-желтым цветом.

Для обеспечения "прошибаемости", работаю "покристалльно".
Сначала, произвожу "усушку-утруску" в 1-м кристалле:


Вопрос: "Что означает красное выделение"?

Ответ: красное выделение есть аннулированная часть ярко-желтого выделения

рисунка 6. Это те "подозреваемые", перед которыми нужно извиниться.

Вопрос: "Почему часть обходных байтов аннулирована"?

Ответ: потому, что существует числовой "разнобой" со 2-м сценарием (пары чисел не одинаковы).

Если, в 1-м сценарии, обойти то что выделено красным цветом, то начиная с 4-го полного цикла программы (1-й цикл - вывод 1-го "кадра", 2-й цикл - вывод картинки

1-го сценария, 3-й цикл - вывод картинки 2-го сценария) и далее, в картинке 1-го сценария, будут иметь место быть упомянутые выше "кракозябры" ("обрывки" кодов картинки 2-го сценария).

Вот так и "родился" "чистовик карты обходов" 1-го сценария, в части касающейся 1-го кристалла:


Для наглядности, ниже этого "чистовика", я поместил картинку, в которой надпись 2-го сценария наложена на надпись 1-го сценария.

После "вгрызания в ее сермяжную суть", вернее всего, возникнет вопрос: "Почему не обходятся массивы нулевых байтов (они есть), расположенные правее"?

Ответ: потому, что 1-й сценарий должен "жить душа в душу" и с 1-м "кадром", и со

2-м сценарием, а иначе - "кракозябры".

Проще говоря, речь идет о совпадениях числовых значений "одноадрессных" байтов

кодов картинок 1-го "кадра", 1-го и 2-го сценариев (в "комплексе").

Ну ничего, отыграюсь на 2-м сценарии, так как в этом случае проще: 2-й сценарий должен "жить душа в душу" только с 1-м сценарием (1-й "кадр" - "по барабану").
Теперь произвожу "усушку-утруску" во 2-м кристалле:


Принцип выделения красным цветом - тот же самый: разница числовых значений "одноадресных" байтов 1-го и 2-го сценариев.

Вот так и "родился" "чистовик карты обходов" 1-го сценария, в части касающейся 2-го кристалла:



Теперь "прислоняю" одну картинку к другой, в результате чего получился "чистовик карты обхода" 1-го сценария:


Особенность этой "карты обходов" заключается в том, что массивы байтов, выделенные ярко-желтым цветом, за исключением массивов байтов боеголовки и нижней половины солнца, повторяются в трех кодах:
- в коде картинки 1-го "кадра",

- в коде картинки 1-го сценария,

- в коде картинки 2-го сценария.
А так и должно быть, так как 1-й сценарий находится в "окружении" 1-го "кадра" и

2-го сценария, и для обеспечения полного отсутствия "кракозябр", нужен "могучий консенсус" (это камень в огород инициатора перестройки) типа "сам живи и другим жить не мешай".

Если этой "триединой любви" не состоится (будет обойдено то, что не повторяется во всех 3-х случаях), то на индикацию, из-за наличия в графическом модуле оперативной памяти данных, будет выведена часть "продуктов предыдущей жизнедеятельности", которые конструктору нужны так же, как козе баян и зайцу лыжи.

Так как, в данном случае, речь идет о компромиссной оптимизации без каких бы то ни было поблажек и отклонений от "материнской линии" (по визуальному восприятию содержимого дисплея - точное повторение "матери"), то и "триединая любовь" обязательно должна иметь место быть.

А если ее нет, то нужно "обрушить на голову врага" супермудрое армейское изречение: "Не хочешь - заставим, не можешь - научим".

А заодно и подкрепить его делом.

Только так, а никак иначе. А иначе - "Гитлер капут".

Ну ладно, это лирика. Нечего "панику разводить".

Пока никакого "Гитлер капута" не прослеживается.

Прослеживается вполне реальный и милый сердцу "чистовик карты обходов" 1-го сценария (см. рис. 14).
Теперь нужно "состряпать" "чистовик карты обходов" 2-го сценария.

Вопрос: "Чем, в части касающейся перспектив компромиссной оптимизации, 2-й сценарий отличается от 1-го"?

Ответ: любвеобильностью.

То есть, требуется не какая-то "хитромудрая", "триединая любовь", а более понятная, "двуединая".

Это означает то, что "любовь" должна происходить только между 1-м и 2-м сценариями.

1-й "кадр" - "по барабану" (ушел на пенсию).

А раз это так, то при "ваянии" "чистовика карты обходов" 2-го сценария, за основу можно взять "чистовик карты обходов" 1-го сценария.

Нужно просто "доукомплектовать" его теми массивами байтов, которые, в связи с изменением "статуса любви", можно "безбяково" обойти.

Вот и получится "чистовик карты обходов" 2-го сценария.

Ну и ладушки.

Когда знаешь что делать, оно как-то сподручнее и на душе веселее.

3. Составление "чистовика карты обходов" 2-го сценария
Принцип работы - тот же самый: отыскиваются и метятся "одноадресные" байты.

Светло-желтым цветом выделены элементы "чистовика карты обходов" 1-го сценария.

Зеленым цветом выделены дополнительные совпадения.






Теперь можно составить "чистовик карты обходов" 2-го сценария:

Рис. 19 удобен тем, что на нем четко видны те дополнительные (по отношению к "чистовику карты обходов" 1-го сценария) массивы байтов, которые можно, во 2-м сценарии, "безбяково" обойти.

Они выделены зеленым цветом.

Но для дальнейшей работы, более пригоден такой вариант "чистовика карты обходов" 2-го сценария:


4. Составление сводного "чистовика карты обходов" 1-го и 2-го сценариев
Теперь можно "собрать все до кучи", то есть, "сваять" сводный "чистовик карты обходов" 1-го и 2-го сценариев, а затем "довести его до ума" в том смысле, чтобы он был удобен в дальнейшей работе.

Первая часть этой задачи решается так:


В принципе, все "обходные" массивы можно было бы "закрасить" одним и тем же цветом, но изначально, все-таки есть смысл сконцентрировать внимание на принадлежности этих массивов к тому или иному сценарию и на способах обходов.


Ярко-желтым цветом выделены те массивы, которые обходятся в 1-м сценарии.

Зеленым цветом выделены те массивы, которые обходятся во 2-м сценарии.

Черным цветом выделены те массивы, которые "контачат" с "границами"

страниц графического модуля и которые можно обойти без дроблений

(с помощью инструкций Set Page или Set Address).


Вот что получилось в конечном итоге:


Красные цифры это номера байтов, которые обходятся.
Программа, в которой реализованы эти обходы, называется 12864_5.asm (прилагается).

Она работает в "железе". Можете убедиться.

В этой программе, для обеспечения комфортной, адресной "навигации" по таблицам, я не стал сдвигать байты влево, а сохранил их табличные "координаты".

Те байты, которые обходятся, заблокированы (выделены) точками с запятыми.

Особое внимание обратите на адресацию к первому байту "подмасива" и на назначение количества байтов в "подмассиве".

"Мать" этой программы - программа 12864_2.asm.

На "высоких скоростях махания крыльями", программа 12864_5.asm, по качеству картинки, будет наиболее выигрышна, так как, при прочих, равных условиях, жидкие кристаллы успеют повернуться на больший угол.

Но по большому счету, даже и не в этом дело, ведь во многих случаях, высокая скорость динамики не требуется и можно использовать "сплошное" заполнение.

А дело в том, что на этом примере, я попытался показать "кухню" работы с большими массивами табличных данных, "конструкция" которых далеко не всегда рациональна.

Особенно тогда, когда эти массивы "ваялись от балды" (как в данном случае).

А вот если изначально (то есть, после "полного цикла вождения носом по батарее") знать, за какую именно "сиську нужно дернуть" (это я про "корову, которая молоко дает"), то к примеру, та же самая картинка (или ее элемент) будет "ваяться" не абы как, и "место ее дислокации" будет выбираться по такому же принципу.

Для этого, в том или ином табличном, вычисляемом переходе, на уровне сознания и подсознания, нужно увидеть то, что в нем "замаскировалось".

Глубокое понимание этой темы будет иметь место быть тогда, когда человек сможет "отчитаться" за каждую цифирку того или иного массива байтов: почему она именно такая, а не другая, почему она "залегла" именно в этом "месте", а не в другом и т.д.?

И именно в этом "въедливом" контексте, я затеял разговор о дроблениях/обходах/компромиссной оптимизации.

На мой взгляд, в "первичнопонятийном" отношении, такой разговор нужен, и я надеюсь на то, что коллективными усилиями, мы разберемся с тем, что есть рационально, а что есть нерационально.

Как из нерационального сделать рациональное - отдельный и большой (даже огромный) разговор, но для начала, как минимум, нужно составить представление о том "что такое хорошо и что такое плохо", а заодно и как следует прочувствовать работу с большим количеством "не хилых" табличных переходов, "разбросанных от Калининграда до Владивостока".

Обращаю Ваше внимание на то, что мы находимся в "епархии" больших и "серьезных" массивов данных.

Их размещение в памяти программ ПИКа выигрышно, так как это позволяет обойтись без использования внешней памяти программ.

Сие сулит большое "счастье", а заодно и большую работу, так как тема совсем не слаба.

"Практикум по конструированию устройств на PIC контроллерах"      http://ikarab.narod.ru       E-mail: karabea@lipetsk.ru






Похожие:

Байты данных, которые подтверждают ранее установленные состояния (вне зависимости от их числовых значений) iconУравнение состояния Теплота удельная
Удельная внутренняя энергия и удельная энтальпия рабочего тела (вне зависимости от термодинамического процесса): ∆u = cv*(T2 – T1);...
Байты данных, которые подтверждают ранее установленные состояния (вне зависимости от их числовых значений) icon26 Библиотека числовых данных [lib numerics]
Эти пункты описывают компоненты, которые c ++ программы могут использовать, чтобы выполнять получисловые операции
Байты данных, которые подтверждают ранее установленные состояния (вне зависимости от их числовых значений) iconУрок Политической Национальной Украинской Логики /сарказм
К тому же, сама логика приобрела все признаки науки, определению которой около трех столетий – повторяемость результатов вне зависимости...
Байты данных, которые подтверждают ранее установленные состояния (вне зависимости от их числовых значений) iconРешение текстовых задач на сравнение величин и их числовых
Познакомить с решением текстовых задач на сравнение величин и их числовых значений с помощью числовой прямой
Байты данных, которые подтверждают ранее установленные состояния (вне зависимости от их числовых значений) iconЗадача 2 для варантов 10 18 Задача 3 для
По результатам проведённых вычислений построить графически зависимости B(r)/B(R), H(r)/H(R) в интервале значений r от r до R0 для...
Байты данных, которые подтверждают ранее установленные состояния (вне зависимости от их числовых значений) icon3. концепция данных
Это представение о данных непосредственно используется при програм­мировании в числовых кодах и не создает неоднозначности, поскольку...
Байты данных, которые подтверждают ранее установленные состояния (вне зависимости от их числовых значений) iconПозиционные системы счисления
Изучение систем счисления, которые используются в компьютерах, важно для понимания того, каким образом производится обработка числовых...
Байты данных, которые подтверждают ранее установленные состояния (вне зависимости от их числовых значений) iconЛабораторная работа 6 Тема: Корреляционно-спектральный анализ случайных сигналов. Проблема анализа случайных сигналов
Задача анализа таких сигналов состоит в отыскании числовых значений параметров, которые позволят однозначно определять значения сигнала...
Байты данных, которые подтверждают ранее установленные состояния (вне зависимости от их числовых значений) iconДанные могут быть разделены на два класса
Тип данных – определяет множество значений, которые могут принимать данные, набор операций, которые можно выполнять с этими данными,...
Байты данных, которые подтверждают ранее установленные состояния (вне зависимости от их числовых значений) iconЛекция №8 Иерархическая модель данных
В отличие от ранее рассмотренных моделей данных, где предполагалось, что информационным отображением одной предметной области является...
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org