FFFF

Инструкции TBB , TBH

5 сообщений в этой теме

FFFF    0

был бы признателен если бы кто то подробно объяснил как работают инструкции табличного перехода. Ни как до конца не пойму как взаимосвязаны индекс передаваемый в регистре и значение записываемое в таблице. И как вообще происходит переход, что за значение записывается в таблице?

Спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
funs: // rx - регистр с номером строки таблицы
            tbh     [pc, rx, lsl #1]
Table:
    .hword   ((__funs_1 - Table)/2)
    .hword   ((__funs_2 - Table)/2)
    .hword   ((__funs_3 - Table)/2)
__funs_1:
			код
__funs_2:
			код
__funs_3:
			код

Часть вопроса является ответом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
LiVit    7

В ячейках таблицы хранится адрес функции на которую будет переход.

Например, у вас есть три функции, которые должны выполняться в зависимости от состояния переменной а. 
Если а == 0 - функция 1
если а== 1 - функция 2
если а == 2 - функция 3
В ячейку 0 записывается адрес функции 1, в ячейку 1 - адрес функции 2, в ячейку 2 - адрес функции 3.

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

А вообще - пишите на Си. И побольше комментариев.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
FFFF    0

Правильно ли я понимаю что для инструкции ТВВ  все переходы на процедуры лежат в диапазоне 514 байт, считая от начала  таблицы переходов, иными словами таблица переходов и адрес начала последней прцедуры должны располагаться не далее чем за 514 байт от первой ячейки таблицы переходов? Или откуда счет байтов идет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
UTSource

Найдите миллионы труднодоступных

электронных компонентов

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...