2011-03-25 60 views
1

我一直在做更多的閱讀,並且發現了這個link。在這裏大部分的實施互斥的步驟是相當直接的和可以理解的......但我不明白的幾件事情是在這個片斷:ARM程序集中的語法

目前 lock_mutex過程中
BEQ  %b1   ; Failed - retry from 1 
    ; Lock acquired 
    DMB     ; Required before accessing protected resource 
    BX  lr 2   ; Take appropriate action while waiting for mutex to become unlocked 
    WAIT_FOR_UPDATE 
    B  %b1   ; Retry from 1 

。什麼是%b1%f2 ??他們涉及什麼?

感謝, 維傑

回答

1

我不熟悉那裏使用的彙編語法,但如果要我猜,我會說,%b1落後跳轉到label 1,和%f2指向轉發跳轉到標籤2.

+0

這是我想到的,但在ARM標籤應該開始。 BEQ只接受名稱,比如'.loop BEq loop' – Andrey 2011-03-25 22:29:19

+0

@Andrey,這聽起來像是完全依賴於彙編程序的細節。 – 2011-03-25 22:39:44

4

%b/f用於引用指令周圍的臨時標籤。 %b表示「後退」,%f表示「前進」。該號碼是要使用的標籤。例如,您在代碼中的2在前三行中將被稱爲%f2,在最後兩行中將被稱爲%b2

+1

我們通常將這些與宏結合使用。 – 2013-02-12 16:54:11