assembly - MIPS 中的注释有地址吗?
问题描述
我有一个关于 MIPS 中的评论通常如何存储的幕后问题。主要是:为什么它们不影响依赖于位置的指令?这与它们的存储方式有关吗?
例如,假设我有一个跳转语句,例如
j Label
# I'm a comment. I don't do anything!
Label:
该跳转指令可能是0x08100007
十六进制的。如果该评论存在与否,说明将是相同的。至少,根据我的 MIPS 模拟器 MARS 4.5。
但是,如果我在标签和跳转语句之间放置一条有意义的指令,十六进制代码就会递增。
j Label
addi $t0, $t0, 10
Label:
根据 MARS,跳转指令实际上以0x08100008
十六进制递增。
那么,为什么注释不将地址转移到跳转指令需要去的地方呢?
解决方案
处理器不知道或看不到:
- 评论
- 数据声明
- 标签
它只看到机器代码指令——这些指令告诉它它需要知道的一切
- 接下来要执行什么指令
- 如何解释数据(变量/存储位置)
- 如何处理一些数据
由于注释在机器代码中没有表示,它们被编译器或汇编器删除。
标签被移除,除非它们是全局的——用于多文件编译(或者有时如果启用了调试)。
数据声明变成将存储在程序中的数据;数据将被加载到内存中运行,但处理器只会看到通过程序的机器代码指令作为操作数引用的数据。
推荐阅读
- highcharts - Highcharts - 绘图区域外的注释(顶部/底部) - 不显示
- python - ImportError:无法从“__main__”导入名称 some_name
- flutter - Dart / Flutter 条件命名参数
- javascript - 使用 Object.assign 时对象未在 javascript 中写入 JSON
- flutter - 使分隔器匹配收缩包装容器的宽度?
- java - 从 ArrayList 的数组的克隆中删除对象
- list - 将鼠标悬停在按钮上时如何在按钮上显示列表
- html - 是否可以在后端创建具有某种格式的表单?
- css - 是否应该在 CSS 中引用带空格的属性
- sql - SQL 在查询中在哪里使用 LIMIT