assembly - MIPS 中的符号地址与标签
问题描述
我只是想确定我的定义是准确的。程序标签只是符号地址的另一个术语,还是不同且更具体的东西?
解决方案
几乎是的;另请参阅MIPS 标签存储位置,以了解有关符号作为引用内存地址的方式的更多信息。它们对于避免手动重新计算每个循环顶部的数字地址(或者实际上是与相关分支的距离)非常有用。
它们对于无法进行汇编时间计算并且必须推迟到链接时间的情况也很有用。
术语:标签定义符号。 符号也可以用其他方式定义,但通常是通过标签。
foo:
在一行本身(或在一行的开头)是一个标签。
foo
是您可以从其他地方引用的符号jal foo
,例如或bne foo
。或者将地址放入一个寄存器中la $t0, foo
对于导出的符号,您甚至可以引用其他源文件中的符号,以便它们最终出现在您的汇编器从您的 asm 源创建的目标文件 ( ) 的符号表中。.o
(例如,您使用.global foo
导出foo
而不是将其保留为文件本地符号。)
在 GAS 语法(MARS 主要使用)中,定义符号的其他方法是使用.set
指令之类的东西,或者.weakref
定义一个标签,该标签是另一个标签的别名。或者.comm
在 BSS 中保留一些空间并将符号名称指向它。(但没有使用.bss
指令来实际制作.bss
当前部分,所以这不是标签。)
推荐阅读
- javascript - 从 DOM 元素中获取 javascript 对象
- python-3.x - 我的熊猫数据框不能按列条件过滤
- python - 是否可以从以下每个值中删除点?
- sql - SQL:查看销售的产品包
- regex - 正则表达式帮助 - 不匹配特定字符串但不匹配其他所有内容?
- devops - 如何将变量传递到“az pipelines variable-group variable create”命令
- python - 在 Python 中使用 Groupby 进行日期时间时出现问题。如何用月/年制作条形图?
- python - ModuleNotFoundError: No module named 'Src' - 当我运行 Pytest
- ruby-on-rails - 如何使用 RSpec 测试脚本?
- javascript - 如何有条件地使用 JSON 数据生成动态角度形式