Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Вот без прерываний самый тревиальный пример с icall. Варианты - сам уж >>

Отправлено VasilyS 22 июня 2008 г. 14:56
В ответ на: Ответ: Чёта не понял.. Можно поподробней изъястнитцо? отправлено <font color=gray>hnjejfiofipkdoq</font> 22 июня 2008 г. 13:48

Омерики не открою и у Голландии выиграть с таким кодом не получится.
Просто пример. Оверкод большой за счет RET, но в принципе терпимый. ВременнЫе накладные расходы тоже. Примерно так делал когда прищемило размером памяти на 4051, но с помощью jmp @a+DPTR.
// Таблитца различающихся кодов. Для простоты приму что разница в каждом случае только в реализации одной команды.
TABLE_FOR_DIFFERENT0:
dw COP(mov r0,r1), COP( ret ) // case 0
dw COP(mov r1,r0), COP( ret ) // case 1 Addr = (case0 + 4)
dw COP(mov r0,r2), COP( ret ) // case 2 Addr = (case0 + 8)
.....
dw COP(mov r1,r2), COP( ret ) // case 15 Addr = (case0 + 64)

TABLE_FOR_DIFFERENT1:
dw COP(mov r3,r8), COP( ret ) // case 0
dw COP(mov r4,r9), COP( ret ) // case 1. Addr=(case0 + 4)
dw COP(mov r5,r10), COP( ret ) // case 2 Addr = (case0 + 8)
......
dw COP(mov r6,r11), COP( ret ) ///case 15 Addr = (case0 + 64)

TABLE_FOR_DIFFERENT3 онологично
TABLE_FOR_DIFFERENT4 онологично
Программа:
// Пока идет общий код для всех фрагментов
nop
nop
nop
; пришло время выполнить ПЕРВЫЕ различающиеся коды 1 из 16
в r16 - дешифрированный номер текущей ветки "1 из 16"
r16 <<= 2; учет длины различающихся фрагментов кода. Не портить.
Z = TABLE_FOR_DIFFERENT0
Z += r16; настроен на свой фрагмент.
icall
; опять одинаковый код
nop
nop
nop
; пришло время выполнить ВТОРЫЕ различающиеся коды 1 из 16
Z = TABLE_FOR_DIFFERENT1
Z += r16; // в r16 - разница адресов
icall
и так для различающихся мест 2, 3, 4...



Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
что получится, если сложить 4 и 4 ?

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru