Это что за изврат такой? Ты бы еще опкоды ручками догадался писать - нахуа вообще всякие там ассемблеры/компилеры, ежели мы сами с ТАКИМИ усами? Для того, чтобы IVT слинковалась по-людски, нужно всего-навсего в исходнике называть ISR точно так, как прописано в скрипте:
void __attribute__((__interrupt__)) _INT0Interrupt(void); // Global declaration
void __attribute__((__interrupt__)) _INT0Interrupt(void) {/* put C30 code here */}
.global __INT0Interrupt ; Global declaration
__INT0Interrupt:
; put ASM30 code here
retfie
Для С30 имя ISR пишется с одним подчеркиванием, для ASM30 - с двумя. Если так уж нужно разместить именно по конкретным адресам - пользуйся атрибутом
address (C30) или директивой
.org (ASM30)