我目前正在使用 TC275 三核芯片,并且正在探索从 Hightec 免费三核入门工具链上的示例中获取的启动代码。我想知道方括号在汇编语句中的作用。就像我之前使用 ARM 内核一样,当方括号被寄存器包围时,它表示对该寄存器地址存储的值的引用。
但是对于 Tricore,例如使用 LEA 指令:“ lea %a14, [%a14]lo:__crt0_config
”。该指令的含义类似于获取__crt0_config
函数地址的低 16 位值加上寄存器 a14 中可用的低 16 位值,然后将其分配给寄存器 a14 中的低 16 位。
我参考了 Hightec 免费三核入门工具链的用户指南中的文档,它说:
间接:如果使用操作数(寄存器或常量)间接访问内存,您可以选择将其括在方括号中(例如[r4]
)。这完全符合上述规范;但是,没有选项可以让您指定使用此类间接说明符(阅读:方括号)是非法的、可选的还是强制性的。这意味着您不能更改默认值,即“可选”。当然,如果您在不允许使用间接说明符的地方使用它们,您将收到一条错误消息,该消息再次符合汇编程序助记符规范。
除了 lea 指令,还有ld.w
andst.w
指令也使用方括号(但该mov
命令没有)。我认为这与寻址模式有关。
请帮我理解问题。
谢谢!!!