MIPS组装标签

时间:2014-02-08 23:16:09

标签: assembly mips

MIPS的程序集是否读取每个标签?忽略任务和语法,我只是快速地把东西放在一起。

add reg3, reg1, $zero
add reg1, reg1, reg2
beq reg1, reg3, BRANCH1      #reg2 contents are zero
bne reg1, $zero, BRANCH2     #reg1 doesn't equal zero
BRANCH1: add returnReg, reg1, $zero
BRANCH2: add returnReg, reg2, $zero
jr returnAddress
除非它们被跳过,否则它会逐行读取,包括标签?例如,除非reg1的内容等于零,否则每次都会执行BRANCH1?

来自wiki: 标签是让您的生活变得简单的东西。当你引用你的程序时, 而不是必须计算行数,你可以给它一个名字 您可以在循环,跳转和变量名称中使用它。 标签不会出现在您的最终代码中,它们只是为了方便起见,这是您从典型的MIPS汇编程序中获得的少数优惠之一。它还使汇编程序的生活变得简单,因为它现在可以轻松地重新定位和链接代码。如果你不知道那些是什么,请不要担心,这会在以后发生。

从这一点来看,我认为标签只不过是一个行参考。这意味着跳转代码(使用bne,beq,jr,j等)是防止某条线上的指令被读取的唯一方法。这是正确的想法吗?

2 个答案:

答案 0 :(得分:5)

标签只能让您通过跳转来引用该行。 CPU本身只能看到机器代码。您的代码中的任何注释都是如此。它们只存在于汇编程序中 - 然后将其转换为机器代码。

如果您不希望它执行,您将需要跳过一行。

答案 1 :(得分:0)

标签是为人类创建的,用于编写和阅读更方便,在组装后,它们被翻译成机器代码。 当然,您可以不使用任何标签,但这将引入最后两个问题:

  
      
  1. 你需要数不清楚;
  2.   
  3. 一旦你在汇编程序中的某处更改,几乎你需要更改你的大部分jr,j,jal等,因为你正在使用程序的绝对地址。
  4.   

如果你使用标签(现在他们引用了程序中的部分),这些程序将毫不费力地解决!