Цитата
Как я понимаю, вектор по адресу 0x08 должен содержать инструкцию перехода на функцию main загрузчика?
Во первых, не загрузчика, а загружаемой программы.
Во вторых, он должен быть по адресу 0. Программа стартует сначала, таки.
В третьих, функции main предшествует всегда другая функция, которая инициализирует стеки, переменные и прочая. А уж потом передается управление майн.
В вашем примере это адрес 20.
Все вектора должны быть.
Все они должны быть в виде команды B (как в примере), либо LDR PC (как объясняется в тексте).
Вот когда длина похожа на правду и присутствуют коды нужных команд, принимается решение о загрузке программы и ее запуске.
Реальный пример.
Да все программы одинаковые. Отыщите в том компиляторе, что вы используете некий ассемблерный стартап файл, ключевое слово *startup*.
Там увидите структуру прерываний арм.
Ну а по листингу можно понять куда какие адреса подставляются.
Размер вы должны загонять самостоятельно, как вариант. Если в компиляторе или линкере не обнаружится соответсвующих данной цели способов...
---
PS. Жуткий адрес FFFFFFE - это всего лишь отрицательное смещение, которое требуется для формирования команды, которая зацикливается сама на себя.
Сообщение отредактировал DpInRock - Sep 20 2011, 16:29