首页 > 解决方案 > MIPS 中的符号地址与标签

问题描述

我只是想确定我的定义是准确的。程序标签只是符号地址的另一个术语,还是不同且更具体的东西?

标签: assemblymips

解决方案


几乎是的;另请参阅MIPS 标签存储位置,以了解有关符号作为引用内存地址的方式的更多信息。它们对于避免手动重新计算每个循环顶部的数字地址(或者实际上是与相关分支的距离)非常有用。

它们对于无法进行汇编时间计算并且必须推迟到链接时间的情况也很有用。


术语:标签定义符号。 符号也可以用其他方式定义,但通常是通过标签。

foo: 在一行本身(或在一行的开头)是一个标签

foo是您可以从其他地方引用的符号jal foo,例如或bne foo。或者将地址放入一个寄存器中la $t0, foo

对于导出的符号,您甚至可以引用其他源文件中的符号,以便它们最终出现在您的汇编器从您的 asm 源创建的目标文件 ( ) 的符号表中。.o(例如,您使用.global foo导出foo而不是将其保留为文件本地符号。)

在 GAS 语法(MARS 主要使用)中,定义符号的其他方法是使用.set指令之类的东西,或者.weakref定义一个标签,该标签是另一个标签的别名。或者.comm在 BSS 中保留一些空间并将符号名称指向它。(但没有使用.bss指令来实际制作.bss当前部分,所以这不是标签。)


推荐阅读