Цитата(KARLSON @ Aug 29 2011, 09:55)

1) как узнать размер функции?
Сгенерить map-файл.
Цитата(KARLSON @ Aug 29 2011, 09:55)

2) как предотвратить наложение адресов при перепрограммировании, вдруг новая функция растолстела больше диапазона первоначального?
Линковшик выдаст ошибку, если функция не помещается в выделенный для нее сегмент памяти.
Цитата(KARLSON @ Aug 29 2011, 09:55)

3) можно ли при перепрограммировании переложить функцию по другому адресу, где при этом прописать остальной программе, что перепрограммированная функция запускается по новому адресу?
Можно сделать также, как это было в MSDOS. Чтобы была совместимость для программ, адреса вызова функций в этой ОС не менялись от версии к версии. Но по адресу вызова функции стоял JMP на ее реальный адрес, по которому она располагалась в памяти. Вам можно поступить так же, организовав таблицу переходов для вызова функций. Адреса функций в эту таблицу пускай заносит сам компилятор. Не барское это дело на ЯВУ
вручную считать адреса и учитывать всякие смещения, чай не на ASMе программируете