我一直在做更多的阅读并且遇到了这个link。在这里,实现互斥锁的大多数步骤都非常直接且易于理解......但是我不明白的一些事情就在这个片段中:
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
出现在 lock_mutex 程序中。什么是%b1 和%f2 ?它们与什么有关?
谢谢, 维杰
答案 0 :(得分:4)
%b/f
用于指代指令周围的临时标签。 %b
表示“后退”,%f
表示“前进”。该号码是要使用的标签。例如,您在代码中的2
在前三行称为%f2
,在最后两行称为%b2
。
答案 1 :(得分:1)
我不熟悉那里使用的汇编语法,但如果我不得不猜测,我会说%b1
指的是向后跳转到标签1,{ {1}}指向转发跳转到标签2。