计算机科学

首页 > 计算机科学

标记 (编程语言)

2018-09-03 09:38:18     所属分类:源代码

编程语言中的标记是加在源代码中识别用的字符串,大部分的语言都将标记视为标识符(identifier),后面要加一个冒号作为识别。

在许多高级语言中标记会用来标示Goto指令的终点[1][2]。在汇编语言中标记则是用来标示跳跃指令(如JMP)的终点[3]。也时也会利用标记来作为程序的分段。Fortran及BASIC语言支持数字体的标记,也就是行号[4]。标记也在调试时用来识别已编译过程序的进入点。

目录

  • 1 用途
    • 1.1 汇编语言
  • 2 高级语言
  • 3 引用
  • 4 参考资料

用途

汇编语言

在汇编语言中要实现流程控制时,往往需要让程序计数器前移或后移一段距离(例如前移5个比特),移动的距离会因代码变动而不同,例如在某处增加(或删除)一行程序码,程序中所有有越过更改代码的前移(及后移)指令都要重新计算需移动的距离。这样的程序在阅读时需经过计算才能知道任何跳跃指令的终点,程序的可读性显然不佳。

标记可以避免上述的问题。可以在程序任何需要的位置加上不同标记,跳跃指令直接指定其终点对应的标记,不需用人工计算程序计数器移动的距离。而且还可以使用有意义,可读性高的标记,更加提升程序的可读性。

以下是一段使用标记的汇编语言程序:

 mov $v0, 0
 MyLabel:                   ; 此處為一個名稱為MyLabel的標記
   add  $v0, $s0            ; 迴圈本體中的程式
   subi $t0, 1              ; 迴圈本體中的程式
 bne $t0, $zero, MyLabel    ; 條件跳躍至MyLabel標記處
                            ; 若指定條件不滿足,繼續執行後續的程式

高级语言

有些高级语言(例如C语言)允许在程序中加上标记,标示像Goto等直接跳跃指令的终点。不过这类指令若应用不当,很容易使得程序变得复杂而难以理解,即所谓的面条式代码。

现代的高级语言提供许多结构化控制流程的指令,可以取代标记及直接跳跃指令。所以许多编程语言已不支持标记,或者只在极少数的场合下使用(如C#中的case)。

另一种可以取代标记及直接跳跃指令的是异常处理,一般会使用try和catch的指令。

引用

  • 行号 (编程语言)
  • Switch指令(Switch statement)

参考资料

  1. ^ C Standard section 6.8.6.1 The goto statement
  2. ^ GOTO Statement QuickSCREEN. Microsoft. 1988 [2008-07-03]. 
  3. ^ O. Lawlor. nasm x86 Assembly. [2008-07-03]. 
  4. ^ Differences Between GW-BASIC and QBasic. 2003-05-12 [2008-06-28]. 

上一篇:软件质量
下一篇:缩进风格
相关推荐