0

我是 xtensa 架构的新手,第一步尝试映射重置向量。谷歌搜索将我带到 xtensa 的 Uboot 端口(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

我从链接 https://0x04.net/~mwk/doc/xtensa.pdf获得了 xtensa ISA (跳转指令第 3.8.4 节)

这是我的问题;

    j  1f   

应该将电脑移动'1f',那么之后的代码有什么用?
标签 2: 和 1: 有什么用?

这使我不再试图理解其余的代码。我提前感谢任何帮助以更好地理解代码以及有关如何在 xtensa 中映射向量的任何其他参考。我不确定标签是否合适,但我无法创建标签 xtensa,所以我选择了最接近的标签。

4

1 回答 1

1

1f不是十六进制值,而是本地标签引用。请参阅手册。作者只是懒惰或认为选择更好的标签名称不够重要。代码等价于:

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

因此,第一个是跳过随后加载并跳转到j的嵌入数据。l32rjx

于 2019-01-27T11:50:18.600 回答