реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Как сделать IJMP внутри программы на Си?
ReAl
сообщение Aug 9 2012, 06:34
Сообщение #16


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(Д_М @ Aug 8 2012, 22:22) *
Не надо использовать IJMP, так как это грубо и вульгарно,
(*ptr)();//вызов функции типа void косвенно, через адрес в перенной
(*hnd_I2C_steps [I2C_step])();

По стандарту достаточно писать
Код
ptr();
hnd_I2C_steps[I2Cstep]();


А GNU-тые адреса меток и goto *ptr; отлично используются в соответствующей реализации protothreads.
И ничуть это не вульгарнее, чем адреса функций.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Maik-vs
сообщение Aug 10 2012, 04:40
Сообщение #17


Местный
***

Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101



Не вижу, чем ijmp отличается от goto?
ну хорошо, goto (label+index)

"IJMP: ...jump to the address pointed to by the Z pointer register ..."

Сообщение отредактировал Maik-vs - Aug 10 2012, 04:43
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Aug 10 2012, 06:16
Сообщение #18


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(Maik-vs @ Aug 10 2012, 08:40) *
Не вижу, чем ijmp отличается от goto?...


в смысле не видите?
icall & ijmp
имеет смысл применять когда адресс не известен на момент компиляции.

Например "оверлейная" логика = прошиваете через самопрограмирование свой МК. Не затирая предыдущую прошивку. Явные адреса будут другие уже. Данный подход более помехоустойчив и востребован в пром. автоматике.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th June 2025 - 17:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01358 секунд с 7
ELECTRONIX ©2004-2016