Assembly MIPS中的符号地址与标签

Assembly MIPS中的符号地址与标签,assembly,mips,Assembly,Mips,我只是想确定我的定义是准确的。程序标签只是符号地址的另一个术语吗?或者它是不同的、更具体的东西吗?是的;有关符号作为内存地址引用方式的更多信息,请参见。它们非常有用,可以避免手动重新计算每个循环顶部的数字地址(实际上是距离相对分支的距离) 对于无法计算装配时间,并且必须推迟到链接时间的情况,它们也很有用 术语:标签定义符号。符号也可以通过其他方式定义,但通常通过标签定义 foo:行本身(或行的开头)是一个标签 foo是您可以从其他地方引用的符号,如jal foo或bne foo。或者将的地址放

我只是想确定我的定义是准确的。程序标签只是符号地址的另一个术语吗?或者它是不同的、更具体的东西吗?

是的;有关符号作为内存地址引用方式的更多信息,请参见。它们非常有用,可以避免手动重新计算每个循环顶部的数字地址(实际上是距离相对分支的距离)

对于无法计算装配时间,并且必须推迟到链接时间的情况,它们也很有用


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

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

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

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

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

几乎是的;有关符号作为内存地址引用方式的更多信息,请参见。它们非常有用,可以避免手动重新计算每个循环顶部的数字地址(实际上是距离相对分支的距离)

对于无法计算装配时间,并且必须推迟到链接时间的情况,它们也很有用


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

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

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

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


在GAS语法中(MARS主要使用GAS语法),定义符号的其他方法是使用
.set
指令,或者使用
.weakref
来定义作为另一个标签别名的标签。或
.comm
在BSS中保留一些空间,并将符号名称指向它。(但不使用
.bss
指令实际使
.bss
成为当前节,因此这不是标签。)

是的,标签将名称与内存地址相关联。机器代码使用内存地址,它最终是一个数字(根据需要编码,用于机器指令或数据),而汇编代码使用标签的名称(通常)。是的,标签将名称与内存地址相关联。机器代码使用内存地址,最终是一个数字(根据需要编码,用于机器指令或数据),而汇编代码使用标签的名称(通常)。