fbpx
维基百科

標記 (程式語言)

程式語言中的標記(英語:Label)是加在源代碼中識別用的字串,大部份的語言都將標記視為標識符,後面要加一個冒號作為識別。

在許多高階語言中標記會用來標示Goto指令的終點[1][2]。在組合語言中標記則是用來標示跳躍指令(如JMP)的終點[3]。也時也會利用標記來作為程式的分段。FortranBASIC語言支援數字型的標記,也就是行號[4]。標記也在调试時用來識別已編譯過程式的進入點。

用途 编辑

組合語言 编辑

在組合語言中要實現流程控制時,往往需要讓程式計數器前移或後移一段距離(例如前移5個位元),移動的距離會因程式碼變動而不同,例如在某處增加(或刪除)一行程式碼,程式中所有有越過更改程式碼的前移(及後移)指令都要重新計算需移動的距離。這樣的程式在閱讀時需經過計算才能知道任何跳躍指令的終點,程式的可讀性顯然不佳。

標記可以避免上述的問題。可以在程式任何需要的位置加上不同標記,跳躍指令直接指定其終點對應的標記,不需用人工計算程式計數器移動的距離。而且還可以使用有意義,可讀性高的標記,更加提昇程式的可讀性。

以下是一段使用標記的組合語言程式:

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

高階語言 编辑

有些高階語言(例如C語言)允許在程式中加上標記,標示像Goto等直接跳躍指令的終點。不過這類指令若應用不當,很容易使得程式變得複雜而難以理解,即所謂的麵條式代碼

現代的高階語言提供許多結構化控制流程的指令,可以取代標記及直接跳躍指令。所以許多程式語言已不支援標記,或者只在極少數的場合下使用(如C#中的case)。

另一種可以取代標記及直接跳躍指令的是異常處理,一般會使用try和catch的指令。

參照 编辑

參考資料 编辑

  1. ^ . [2011-03-16]. (原始内容存档于2007-12-24). 
  2. ^ . Microsoft. 1988 [2008-07-03]. (原始内容存档于2009-07-25). 
  3. ^ O. Lawlor. nasm x86 Assembly. [2008-07-03]. (原始内容于2018-01-21). 
  4. ^ Differences Between GW-BASIC and QBasic. 2003-05-12 [2008-06-28]. (原始内容于2013-10-19). 

標記, 程式語言, 程式語言中的標記, 英語, label, 是加在源代碼中識別用的字串, 大部份的語言都將標記視為標識符, 後面要加一個冒號作為識別, 在許多高階語言中標記會用來標示, href, goto, html, title, goto, goto, 指令的終點, 在組合語言中標記則是用來標示跳躍指令, 如jmp, 的終點, 也時也會利用標記來作為程式的分段, fortran及basic語言支援數字型的標記, 也就是行號, 標記也在调试時用來識別已編譯過程式的進入點, 目录, 用途, 組合語言, 高階語言. 程式語言中的標記 英語 Label 是加在源代碼中識別用的字串 大部份的語言都將標記視為標識符 後面要加一個冒號作為識別 在許多高階語言中標記會用來標示 a href Goto html title Goto Goto a 指令的終點 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 參考資料 编辑 C Standard section 6 8 6 1 The goto statement 2011 03 16 原始内容存档于2007 12 24 GOTO Statement QuickSCREEN Microsoft 1988 2008 07 03 原始内容存档于2009 07 25 O Lawlor nasm x86 Assembly 2008 07 03 原始内容存档于2018 01 21 Differences Between GW BASIC and QBasic 2003 05 12 2008 06 28 原始内容存档于2013 10 19 取自 https zh wikipedia org w index php title 標記 程式語言 amp oldid 78643979, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。