nabbla (nabbla1) wrote,
nabbla
nabbla1

Categories:

Раз, два, три, четыре, пять!

Продолжаем учить старого пса новым трюкам. Система команд QuatCore затачивалась под матричные операции, где обращение к отдельным элементам происходит единообразно, через несколько индексов. Отсюда всевозможные варианты адресации:
[X+1]    [X+2i+1]    [X+2j+1]    [X+4j+1]
[X+i]    [X+3i]      [X+2j+i]    [X+4j+i]
[X+k]    [X+2i+k]    [X+2j+k]    [X+4j+k]
[X+i^j]  X           [X+2j+i^j]  [X+4j+i^j]

и то же самое для Z, и почти то же самое для Y, разве что вместо 4j там идёт Treug[j] = j(j+1)/2, специально для треугольных и симметричных матриц, с которыми нам ещё предстоит побороться, в "алгоритме сопровождения".

Но вот незадача, для обнаружения ярких точек, для работы со списком ActivePoints, нам нужно совсем другое - легко и непринуждённо обратиться к первому, второму, четвертому и пятому элементам, то бишь [X], [X+1], [X+2], [X+3] и [X+4]. Не в цикле, а просто строка за строкой, поскольку значения там лежат разнородные. И координаты X,Y обрабатываются по-разному - по Y у нас просто итерации идут, а координату X мы выуживаем из видеопроцессора. А ещё яркость и таинственный "размер точки".

В x86 архитектуре совершенно безумные правила построения эффективного адреса - тут тебе и сегменты, и трансляции из виртуального в физический, и вишенкой на торте непосредственное значение (лежащее прямо в команде) + парочка регистров с разными сдвигами. У нас здесь такого нет, и не предвидится, коды команд набили почти под завязку!

Но получить доступ к этим 5 элементам мы всё-таки можем легко и непринуждённо!


Всё, что для этого нужно - это зафиксировать k=0 и j=1. Похоже, нам эти индексные регистры всё равно особенно без нужды здесь, а так они пользу принесут. И тут же получим:

[X+k] =    [X],
           [X+1] - и так есть,
[X+2j+k] = [X+2],
[X+2j+1] = [X+3],
[X+4j+k] = [X+4], и можно ещё 
[X+4j+1] = [X+5], хотя это значение нам пока не нужно


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

Глядишь, и допишу я когда-нибудь эту "программу захвата", взаимодействующую с видеопроцессором. Хотелось бы на этой неделе.
Tags: ПЛИС, программки, работа, странные девайсы
Subscribe

Recent Posts from This Journal

  • Я создал монстра!

    Вот нормальная счастливая пара разъёмов ОНЦ-БС-1-10/14-Р12-2-В и ОНЦ-БС-1-10/14-В1-2-В: У розетки кроме основного выступа, отмечающего "верх",…

  • Нахождение двух самых отдалённых точек

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

  • Слишком общительный счётчик

    Вчера я чуть поторопился отсинтезировать проект,параметры не поменял: RomWidth = 8 вместо 7, RamWidth = 9 вместо 8, и ещё EnableByteAccess=1, чтобы…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 0 comments