Перемещаемый код для keil166
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено hyppo 12 октября 2004 г. 13:21

Приспичило мне изобразить сабж. Ну я и написал:


typedef void (*RELFUNC)(void);

void CallRelFunc(void)
{
RELFUNC RelFunc;
u_char ucRelBuf[1000];

CopyRelocatableCodeToRelBuf(); //просто откопировать перемещаемый код в буфер

RelFunc=(RELFUNC)ucRelBuf;
RelFunc();
}

Так вот при приведении поинтера на буфер к поинтеру на функцию кейл его режет его в стиле PAGE:OFFSET и вызывается неизвестно что.

Нормально работает если написать вот так:
RelFunc=((RELFUNC)((u_long)RelBuf));

Как нить промежуточное приведение можно убрать?

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru