Как отобразить вектор сброса в архитектуре Xtensa? - PullRequest
0 голосов
/ 27 января 2019

Я новичок в архитектуре xtensa и в качестве первого шага попытался отобразить вектор сброса. Поиск Google привел меня к порту Uboot xtensa (https://github.com/jcmvbkbc/u-boot-tensa/blob/master/arch/xtensa/cpu/start.S), и следующий код;

.section .ResetVector.text, "awx"
.global _ResetVector
   _ResetVector:

 j  1f
.align 4
    2:  .long   _start
    1:  l32r    a2, 2b
       jx   a2

Я получил xtensa ISA по ссылке https://0x04.net/~mwk/doc/xtensa.pdf (раздел 3.8.4 для инструкции перехода)

Вот мой вопрос;

    j  1f   

должен переместить компьютер на '1f', тогда какой смысл использовать код после этого?
Какая польза от меток 2: и 1:?

Это останавливает меня от попыток понять остальную часть кода. Я заранее благодарен за любую помощь, чтобы лучше понять код и за дополнительную информацию о том, как отобразить векторы в xtensa. Я НЕ уверен, что теги уместны, но я не смог создать тег xtensa, поэтому выбрал наиболее подходящий вариант.

1 Ответ

0 голосов
/ 27 января 2019

1f - это не шестнадцатеричное значение, это ссылка на локальную метку.См. руководство .Автор был просто ленив или не считал это достаточно важным, чтобы выбрать лучшие названия лейблов.Код эквивалентен:

    j  skip
.align 4
 addr:
    .long   _start
 skip:
    l32r    a2, addr
    jx   a2

Таким образом, первый j должен перепрыгивать через внедренные данные, которые затем l32r загружает и jx переходит к.

...