Цитата(Karl @ Feb 15 2006, 08:21)

Необходимо поместить функцию по конкретному адресу в памяти.
Делаю это следующим образом:
void boot_test(void) @0x1c00;
...
void boot_test(void) @0x1c00
{
...
}
Компилятор ругается:
Error[Be011]: location address not allowed for functions
В чем проблема? Вроде раньше пробовал - работало?
Таким образом по заданному адресу можно разместить переменную или строку.
С функцией можно сделать так. Сначала создать свой сегмент памяти, размещаемый в диапазоне адресов который вам нужен. Затем в него поместить функцию. Если функция в этом сегменте будет одна, то ее тело фактически будет начинаться с адреса начала сегмента.
1.Создем сегмент. В настройках проекта в разделе linker, в закладке extra options вставляем строку (например):
Цитата
-Z(CODE)MYSEGMENT=1C00-1CFF
1C00-1CFF - это диапазон адресов под создаваемый сегмент.
2.Определяем функцию (например так):
Код
#pragma location="MYSEGMENT"
void Funk (void)
{
//.......
}
или так:
Код
void Funk (void) @"MYSEGMENT"
{
//.......
}