Konqere 0 24 ноября, 2010 Опубликовано 24 ноября, 2010 · Жалоба Как сделать так, чтобы мипсовская программа запускалась с некоторого адреса таким кодом: void foo(void) __attribute__((section(".foo"))) asm("bal main"::); asm("nop"::); Затем должно идти на данный момент пустое пространство(в дальнейшем здесь будет находится переход на обработку прерывания), равное 300 байтам, затем след. код: void main() foo_1(); foo_2(); Я знаю, как указать начало входа программы, но как добиться перехода на строго определенный другой адрес, чтобы зарезервированные адреса не перекрывались ничем другим, не могу вкурить. Буду рад вашей помощи. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alx2 0 25 ноября, 2010 Опубликовано 25 ноября, 2010 · Жалоба Я знаю, как указать начало входа программы, но как добиться перехода на строго определенный другой адрес, чтобы зарезервированные адреса не перекрывались ничем другим, не могу вкурить. Буду рад вашей помощи. Зарезервировать области памяти можно примерно так: .text : { *(.foo) _reserved = .; . = . + 300; /* здесь будет пропущено 300 байт */ *(.text) } > text Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Konqere 0 26 ноября, 2010 Опубликовано 26 ноября, 2010 · Жалоба Зарезервировать области памяти можно примерно так: Вот :rolleyes: Спасибо, не знал. Хотя вчера добился задачи другим способом: каждую функцию в отдельный файл, далее линковку: .text: { foo1.o(.text) . = . +300; foo2.o(.text) } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться