2010-03-09 66 views
8

Heyo,組裝中用盡標籤名稱

我在大學的課程讓我們在大會上編寫程序。直到現在,我從未真正意識到C的易用性。

現在,當我在彙編程序,我經常做,而/爲/,如果循環和條件與標籤,例如:

SKIP: 
    ... 
COMP:ADD R1, R1, #0 ;Check for equality 
    BRZ WHILEEND 
    ...   ;code inside the while loop 
    JMP COMP  ;Return to while loop 
WHILEEND: 
    ... 

所以,在這個while循環(例如)我用1個標籤對於子程序和2個循環本身。我已經用完了所有我正在組裝的循環和分支的良好標籤名稱,你們如何保持它的多樣性和描述性?

回答

11

大多數編譯器允許當地標籤:

routine_1: 
    ... 
.loop: 
    ... 
    jne .loop 

routine_2: 
    ... 
.loop: 
    ... 
    jne .loop 
    ... 
    jmp routine_1.loop 

匿名標籤,在這裏你可以重複使用相同的標籤名稱和參考「最接近落後」或「最接近前進」:

routine_1: 
    ... 
@@: 
    ... 
    jne @b 

routine_2: 
    ... 
@@: 
    ... 
    jne @b 

b倒退)

如果沒有在你的彙編的支持,我想你可以用常規的有問題的標籤前綴的所有局部標籤:

routine_1: 
    ... 
routine_1.loop: 
    ... 
    jne routine_1.loop 
2

在許多彙編程序中,您可以使用相同(通常是數字)名稱來製作多個標籤。該功能可讓您重複使用您的循環標籤,使用jmp 1f跳轉至最近的標籤1jmp 1b,以跳回最近的標籤1

+0

這將是很好的,但我的彙編器是一個初學者一(LC3),使韓元沒有工作。但我想我可以只使用泛型名稱'while1''wend1''if1''ifend2'等etc ... – user289293 2010-03-09 02:09:21

+0

我試圖找出這些'b'和'f'後綴代表什麼。我花了近一個小時來做​​到這一點。最後,我在這裏得到了我的答案。非常感謝 :) – dirtybit 2012-03-26 02:47:42