MIPS 中的注释有地址吗?

Do comments in MIPS have addresses?

我有一个关于 MIPS 中通常如何存储注释的幕后问题。主要是:为什么它们不影响依赖于位置的指令?这与它们的存储方式有关吗?


例如,假设我有一个像

这样的跳转语句
       j Label

       # I'm a comment. I don't do anything!

Label: 

跳转指令可能是十六进制的 0x08100007。无论该评论是否存在,指令都是相同的。至少,根据 MA​​RS 4.5,我的 MIPS 模拟器。

但是,如果我改为在标签和跳转语句之间放置一条有意义的指令,则十六进制代码会递增。

       j Label

       addi $t0, $t0, 10

Label: 

根据MARS,跳转的指令实际上以十六进制递增到0x08100008


那么,为什么注释没有将地址转移到跳转指令需要去的地方?

处理器不知道或看不到:

  • 评论
  • 数据声明
  • 标签

它只看到机器代码指令——这些指令告诉它它需要知道的一切

  • 接下来要执行什么指令
  • 如何解释数据(variables/storage 个位置)
  • 如何处理一些数据

由于注释在机器代码中没有表示,因此它们会被编译器或汇编程序删除。

标签被删除,除非它们是全局的 — 用于多文件编译(或者有时如果启用了调试)。

数据声明变成将存储在程序中的数据;数据将被加载到内存中 运行,但处理器只会看到数据,因为它通过程序的机器代码指令被引用为操作数。