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

 
 
> IAR EW3.30A Объявление глобальной метки в CИ-шной функции, возможно ли такое???
Petrooo
сообщение Feb 13 2006, 11:40
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 21-10-05
Пользователь №: 9 922



Добрый день!
IAR EW3.30A
Возможно ли в СИ-шном модуле внутри какой-либо функции объявить глобальную метку, которою я мог бы "видеть" из другого модуля?
Если интересно, мне это нужно для следующего:

void func1() {
...
GLOBAL_LABEL:
...
}
//-----------------

void func2() {
...
}
//-----------------

void main() {
...
asm ("PUSH.W #GLOBAL_LABEL");
asm ("BR #func2");
...
}

и чтобы после выполнения func2 вернуться не в main, а в func1 на метку GLOBAL_LABEL.
Или все мной вышеописанное можно сделать другим способом?

За ранее благодарю за ответ
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dxp
сообщение Feb 13 2006, 12:21
Сообщение #2


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(Petrooo @ Feb 13 2006, 17:40) *
Добрый день!
IAR EW3.30A
Возможно ли в СИ-шном модуле внутри какой-либо функции объявить глобальную метку, которою я мог бы "видеть" из другого модуля?

Метки в С всегда локальные в пределах функции.

Цитата(Petrooo @ Feb 13 2006, 17:40) *
Если интересно, мне это нужно для следующего:

[...]

и чтобы после выполнения func2 вернуться не в main, а в func1 на метку GLOBAL_LABEL.
Или все мной вышеописанное можно сделать другим способом?

А зачем такое вообще? Сформулируйте полную задачу, может удастся что-то посоветовать.

P.S. Писание на асмовых вставках имеет мало хорошего - оно весьма мешает компилятору оптимизировать код. Если уж нужен асм, то, как правило, лучше целиком на асме и писать. Исключения редки.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
Petrooo
сообщение Feb 13 2006, 12:43
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 21-10-05
Пользователь №: 9 922



Почитал документацию smile.gif
Похоже setjmp и longjmp могут спасти "отца русской демократии" smile.gif

Цитата(dxp @ Feb 13 2006, 15:21) *
А зачем такое вообще? Сформулируйте полную задачу, может удастся что-то посоветовать.


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

Полагаю, что многие "завсегдатаи" форума сталкивались с подобной задачей и было бы интересно увидеть какими методами ее решали.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 27th July 2025 - 23:11
Рейтинг@Mail.ru


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